Being able to handle 8-100 larger KVP or a few thousand tiny ones would be a remarkably helpful tool to have! As with a prior poster though, Id kinda want it to be less volatile than some current methods, where a crash or replace outfit will just undo potentially hours of data. Even a 60 second update-if-necessary save would be phenomenal.
Did my own speed test from excitement, these numbers may not be reflective of future implementation as limits may be imposed!
Max KVP: 8457 (0=0, 1=1, 2=2, 10=10, etc)
llLinksetDataRead: 130.90us
llLinksetDataDelete, 137.36us
llLinksetDataWrite: 227.76us
llLinksetDataListKeys: 36,638us (36.64ms)
So, basically zero. Considering the time to process the ListKeys data, even being 10 times slower (per value) it does offer strong flexibility.
The tests were done with a 65s or 1 run limit:
Write filled the store with integers in string form for key and value, 0=0 etc
Read read integers in string form (up to max for the run)
Delete deleted integers in string form (up to max for the run)
ListKeys read integer string and 16 count until the end, this only managed one run
Script peaked at 0.170ms script time in an empty sim running these.
Note on Max KVP: using base64/16 wont reasonably reduce the number of string characters at these scales (8457 is still 2109 or 4oSJ, 4 characters each)