current commit
250925.2 · src: unflag --experimental-webstorage by default
'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: [`--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');
  }
}