Last active
February 2, 2021 14:36
-
-
Save sftblw/e004ef1c44491144433fadc6de0f4521 to your computer and use it in GitHub Desktop.
browser.storage.local performance test
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
browser.storage.sync.remove("data_obj") | |
browser.storage.sync.remove("data_str") | |
function measureThem(repeatCount, lambda) { | |
performance.clearMarks(); | |
performance.clearMeasures(); | |
const marker = "name" | |
performance.mark(marker); | |
for (let i = 0; i < repeatCount; i++) { | |
lambda(); | |
performance.measure(`${marker} - ${i}`); | |
} | |
let entries = performance.getEntriesByType("measure") | |
let times = entries.map( (item) => item.duration ); | |
console.log(times) | |
console.log(`avg: ${times.reduce((a, b) => a+b) / repeatCount}, all: ${times.join(", ")}`); | |
} | |
var data_str = '{"a_key_0":123,"a_key_1":133,"a_key_2":143,"a_key_3":153,"a_key_4":163,"a_key_5":173,"a_key_6":183,"a_key_7":193,"a_key_8":203,"a_key_9":213,"a_key_10":223,"a_key_11":233,"a_key_12":243,"a_key_13":253,"a_key_14":263,"a_key_15":273,"a_key_16":283,"a_key_17":293,"a_key_18":303,"a_key_19":313,"a_key_20":323,"a_key_21":333,"a_key_22":343,"a_key_23":353,"a_key_24":363,"a_key_25":373,"a_key_26":383,"a_key_27":393,"a_key_28":403,"a_key_29":413,"a_key_30":423,"a_key_31":433,"a_key_32":443,"a_key_33":453,"a_key_34":463,"a_key_35":473,"a_key_36":483,"a_key_37":493,"a_key_38":503,"a_key_39":513,"a_key_40":523,"a_key_41":533,"a_key_42":543,"a_key_43":553,"a_key_44":563,"a_key_45":573,"a_key_46":583,"a_key_47":593,"a_key_48":603,"a_key_49":613,"a_key_50":623,"a_key_51":633,"a_key_52":643,"a_key_53":653,"a_key_54":663,"a_key_55":673,"a_key_56":683,"a_key_57":693,"a_key_58":703,"a_key_59":713,"a_key_60":723,"a_key_61":733,"a_key_62":743,"a_key_63":753,"a_key_64":763,"a_key_65":773,"a_key_66":783,"a_key_67":793,"a_key_68":803,"a_key_69":813,"a_key_70":823,"a_key_71":833,"a_key_72":843,"a_key_73":853,"a_key_74":863,"a_key_75":873,"a_key_76":883,"a_key_77":893,"a_key_78":903,"a_key_79":913,"a_key_80":923,"a_key_81":933,"a_key_82":943,"a_key_83":953,"a_key_84":963,"a_key_85":973,"a_key_86":983,"a_key_87":993,"a_key_88":1003,"a_key_89":1013,"a_key_90":1023,"a_key_91":1033,"a_key_92":1043,"a_key_93":1053,"a_key_94":1063,"a_key_95":1073,"a_key_96":1083,"a_key_97":1093,"a_key_98":1103,"a_key_99":1113,"a_key_100":1123,"a_key_101":1133,"a_key_102":1143,"a_key_103":1153,"a_key_104":1163,"a_key_105":1173,"a_key_106":1183,"a_key_107":1193,"a_key_108":1203,"a_key_109":1213,"a_key_110":1223,"a_key_111":1233,"a_key_112":1243,"a_key_113":1253,"a_key_114":1263,"a_key_115":1273,"a_key_116":1283,"a_key_117":1293,"a_key_118":1303,"a_key_119":1313,"a_key_120":1323,"a_key_121":1333,"a_key_122":1343,"a_key_123":1353,"a_key_124":1363,"a_key_125":1373,"a_key_126":1383,"a_key_127":1393,"a_key_128":1403,"a_key_129":1413,"a_key_130":1423,"a_key_131":1433,"a_key_132":1443,"a_key_133":1453,"a_key_134":1463,"a_key_135":1473,"a_key_136":1483,"a_key_137":1493,"a_key_138":1503,"a_key_139":1513,"a_key_140":1523,"a_key_141":1533,"a_key_142":1543,"a_key_143":1553,"a_key_144":1563,"a_key_145":1573,"a_key_146":1583,"a_key_147":1593,"a_key_148":1603,"a_key_149":1613,"a_key_150":1623,"a_key_151":1633,"a_key_152":1643,"a_key_153":1653,"a_key_154":1663,"a_key_155":1673,"a_key_156":1683,"a_key_157":1693,"a_key_158":1703,"a_key_159":1713,"a_key_160":1723,"a_key_161":1733,"a_key_162":1743,"a_key_163":1753,"a_key_164":1763,"a_key_165":1773,"a_key_166":1783,"a_key_167":1793,"a_key_168":1803,"a_key_169":1813,"a_key_170":1823,"a_key_171":1833,"a_key_172":1843,"a_key_173":1853,"a_key_174":1863,"a_key_175":1873,"a_key_176":1883,"a_key_177":1893,"a_key_178":1903,"a_key_179":1913,"a_key_180":1923,"a_key_181":1933,"a_key_182":1943,"a_key_183":1953,"a_key_184":1963,"a_key_185":1973,"a_key_186":1983,"a_key_187":1993,"a_key_188":2003,"a_key_189":2013,"a_key_190":2023,"a_key_191":2033,"a_key_192":2043,"a_key_193":2053,"a_key_194":2063,"a_key_195":2073,"a_key_196":2083,"a_key_197":2093,"a_key_198":2103,"a_key_199":2113,"a_key_200":2123,"a_key_201":2133,"a_key_202":2143,"a_key_203":2153,"a_key_204":2163,"a_key_205":2173,"a_key_206":2183,"a_key_207":2193,"a_key_208":2203,"a_key_209":2213,"a_key_210":2223,"a_key_211":2233,"a_key_212":2243,"a_key_213":2253,"a_key_214":2263,"a_key_215":2273,"a_key_216":2283,"a_key_217":2293,"a_key_218":2303,"a_key_219":2313,"a_key_220":2323,"a_key_221":2333,"a_key_222":2343,"a_key_223":2353,"a_key_224":2363,"a_key_225":2373,"a_key_226":2383,"a_key_227":2393,"a_key_228":2403,"a_key_229":2413,"a_key_230":2423,"a_key_231":2433,"a_key_232":2443,"a_key_233":2453,"a_key_234":2463,"a_key_235":2473,"a_key_236":2483,"a_key_237":2493,"a_key_238":2503,"a_key_239":2513,"a_key_240":2523,"a_key_241":2533,"a_key_242":2543,"a_key_243":2553,"a_key_244":2563,"a_key_245":2573,"a_key_246":2583,"a_key_247":2593,"a_key_248":2603,"a_key_249":2613,"a_key_250":2623,"a_key_251":2633,"a_key_252":2643,"a_key_253":2653,"a_key_254":2663,"a_key_255":2673,"a_key_256":2683,"a_key_257":2693,"a_key_258":2703,"a_key_259":2713,"a_key_260":2723,"a_key_261":2733,"a_key_262":2743,"a_key_263":2753,"a_key_264":2763,"a_key_265":2773,"a_key_266":2783,"a_key_267":2793,"a_key_268":2803,"a_key_269":2813,"a_key_270":2823,"a_key_271":2833,"a_key_272":2843,"a_key_273":2853,"a_key_274":2863,"a_key_275":2873,"a_key_276":2883,"a_key_277":2893,"a_key_278":2903,"a_key_279":2913,"a_key_280":2923,"a_key_281":2933,"a_key_282":2943,"a_key_283":2953,"a_key_284":2963,"a_key_285":2973,"a_key_286":2983,"a_key_287":2993,"a_key_288":3003,"a_key_289":3013,"a_key_290":3023,"a_key_291":3033,"a_key_292":3043,"a_key_293":3053,"a_key_294":3063,"a_key_295":3073,"a_key_296":3083,"a_key_297":3093,"a_key_298":3103,"a_key_299":3113,"a_key_300":3123}' | |
var data_obj = JSON.parse(data_str) | |
async function test(repeat, lambda) { | |
var perfs = [] | |
for(var i = 0; i < repeat; i++) { | |
var now = performance.now() | |
await lambda() | |
var perf = performance.now() - now | |
perfs.push(perf) | |
// console.log(perf) | |
} | |
console.log("average " + perfs.reduce((a, b) => a + b) / repeat) | |
console.log(perfs) | |
} | |
function sleep(ms) { | |
return new Promise(resolve => setTimeout(resolve, ms)); | |
} | |
console.log("local") | |
await browser.storage.local.set({"data_obj": null}) | |
console.log("data_obj write") | |
await test(100, () => browser.storage.local.set({"data_obj": data_obj}) ) | |
console.log("data_str write") | |
await test(100, () => browser.storage.local.set({"data_str": data_str}) ) | |
console.log("data_obj read") | |
await test(100, () => browser.storage.local.get("data_obj") ) | |
console.log("data_str read") | |
await test(100, () => browser.storage.local.get("data_str") ) | |
console.log("sync") | |
await sleep(1000) | |
console.log("data_obj write") | |
await test(100, () => browser.storage.sync.set({"data_obj": data_obj}) ) | |
await sleep(5000) | |
console.log("data_str write") | |
await test(100, () => browser.storage.sync.set({"data_str": data_str}) ) | |
await sleep(5000) | |
console.log("data_obj read") | |
await test(100, () => browser.storage.sync.get("data_obj") ) | |
await sleep(5000) | |
console.log("data_str read") | |
await test(100, () => browser.storage.sync.get("data_str") ) | |
browser.storage.sync.remove("data_obj") | |
browser.storage.sync.remove("data_str") |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
local | |
data_obj write | |
average 1.52 | |
Array(100) [ 1, 2, 3, 1, 1, 2, 2, 1, 1, 2, … ] | |
data_str write | |
average 0.62 | |
Array(100) [ 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, … ] | |
data_obj read | |
average 0.56 | |
Array(100) [ 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, … ] | |
data_str read | |
average 0.28 | |
Array(100) [ 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, … ] | |
sync | |
data_obj write | |
average 2.76 | |
Array(100) [ 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, … ] | |
data_str write | |
average 2 | |
Array(100) [ 2, 4, 1, 2, 2, 2, 2, 2, 3, 1, … ] | |
data_obj read | |
average 1.08 | |
Array(100) [ 1, 1, 3, 2, 1, 2, 2, 1, 1, 1, … ] | |
data_str read | |
average 0.48 | |
Array(100) [ 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, … ] | |
null |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment