| 'use strict'; |
| const { join } = require('node:path'); |
| const common = require('../common.js'); |
| const tmpdir = require('../../test/common/tmpdir'); |
| |
| let cnt = 0; |
| |
| tmpdir.refresh(); |
| |
| function nextLocalStorage() { |
| return join(tmpdir.path, `${++cnt}.localstorage`); |
| } |
| |
| const options = { |
| flags: ['--experimental-webstorage', `--localstorage-file=${nextLocalStorage()}`], |
| }; |
| |
| const bench = common.createBenchmark(main, { |
| type: ['localStorage-setItem', |
| 'localStorage-setter', |
| 'sessionStorage-setItem', |
| 'sessionStorage-setter'], |
| // Note: web storage has only 10mb quota |
| n: [1e5], |
| }, options); |
| |
| function main({ n, type }) { |
| const localStorage = globalThis.localStorage; |
| const sessionStorage = globalThis.sessionStorage; |
| |
| switch (type) { |
| case 'localStorage-setItem': |
| bench.start(); |
| for (let i = 0; i < n; i++) { |
| localStorage.setItem(i, i); |
| } |
| bench.end(n); |
| break; |
| case 'localStorage-setter': |
| bench.start(); |
| for (let i = 0; i < n; i++) { |
| localStorage[i] = i; |
| } |
| bench.end(n); |
| break; |
| case 'sessionStorage-setItem': |
| bench.start(); |
| for (let i = 0; i < n; i++) { |
| sessionStorage.setItem(i, i); |
| } |
| bench.end(n); |
| break; |
| case 'sessionStorage-setter': |
| bench.start(); |
| for (let i = 0; i < n; i++) { |
| sessionStorage[i] = i; |
| } |
| bench.end(n); |
| break; |
| default: |
| new Error('Invalid type'); |
| } |
| } |