pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/nodejs/node/commit/96ec7eede945e63b3ce8bd20834f075979bd78a0

-6534fbc3f5e83ac0.css" /> benchmark: add webstorage benchmark · nodejs/node@96ec7ee · GitHub
Skip to content

Commit 96ec7ee

Browse files
authored
benchmark: add webstorage benchmark
PR-URL: #55040 Reviewed-By: Benjamin Gruenbaum <[email protected]> Reviewed-By: Vinícius Lourenço Claro Cardoso <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: Rafael Gonzaga <[email protected]>
1 parent c4681d5 commit 96ec7ee

3 files changed

Lines changed: 213 additions & 0 deletions

File tree

benchmark/webstorage/getItem.js

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
'use strict';
2+
const { join } = require('node:path');
3+
const common = require('../common.js');
4+
const tmpdir = require('../../test/common/tmpdir');
5+
6+
let cnt = 0;
7+
8+
tmpdir.refresh();
9+
10+
function nextLocalStorage() {
11+
return join(tmpdir.path, `${++cnt}.localstorage`);
12+
}
13+
14+
const options = {
15+
flags: ['--experimental-webstorage', `--localstorage-file=${nextLocalStorage()}`],
16+
};
17+
18+
const bench = common.createBenchmark(main, {
19+
type: ['localStorage-getItem',
20+
'localStorage-getter',
21+
'sessionStorage-getItem',
22+
'sessionStorage-getter'],
23+
// Note: web storage has only 10mb quota
24+
n: [1e5],
25+
}, options);
26+
27+
function fillStorage(storage, n) {
28+
for (let i = 0; i < n; i++) {
29+
storage.setItem(i, i);
30+
}
31+
}
32+
33+
function main({ n, type }) {
34+
const localStorage = globalThis.localStorage;
35+
const sessionStorage = globalThis.sessionStorage;
36+
37+
switch (type) {
38+
case 'localStorage-getItem':
39+
fillStorage(localStorage, n);
40+
bench.start();
41+
for (let i = 0; i < n; i++) {
42+
localStorage.getItem(i);
43+
}
44+
bench.end(n);
45+
break;
46+
case 'localStorage-getter':
47+
fillStorage(localStorage, n);
48+
bench.start();
49+
for (let i = 0; i < n; i++) {
50+
// eslint-disable-next-line no-unused-expressions
51+
localStorage[i];
52+
}
53+
bench.end(n);
54+
break;
55+
case 'sessionStorage-getItem':
56+
fillStorage(sessionStorage, n);
57+
bench.start();
58+
for (let i = 0; i < n; i++) {
59+
sessionStorage.getItem(i);
60+
}
61+
bench.end(n);
62+
break;
63+
case 'sessionStorage-getter':
64+
fillStorage(sessionStorage, n);
65+
bench.start();
66+
for (let i = 0; i < n; i++) {
67+
// eslint-disable-next-line no-unused-expressions
68+
sessionStorage[i];
69+
}
70+
bench.end(n);
71+
break;
72+
default:
73+
new Error('Invalid type');
74+
}
75+
}

benchmark/webstorage/removeItem.js

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
'use strict';
2+
const { join } = require('node:path');
3+
const common = require('../common.js');
4+
const tmpdir = require('../../test/common/tmpdir');
5+
6+
let cnt = 0;
7+
8+
tmpdir.refresh();
9+
10+
function nextLocalStorage() {
11+
return join(tmpdir.path, `${++cnt}.localstorage`);
12+
}
13+
14+
const options = {
15+
flags: ['--experimental-webstorage', `--localstorage-file=${nextLocalStorage()}`],
16+
};
17+
18+
const bench = common.createBenchmark(main, {
19+
type: ['localStorage-removeItem',
20+
'localStorage-delete',
21+
'sessionStorage-removeItem',
22+
'sessionStorage-delete',
23+
],
24+
// Note: web storage has only 10mb quota
25+
n: [1e5],
26+
}, options);
27+
28+
function fillStorage(storage, n) {
29+
for (let i = 0; i < n; i++) {
30+
storage.setItem(i, i);
31+
}
32+
}
33+
34+
function main({ n, type }) {
35+
const localStorage = globalThis.localStorage;
36+
const sessionStorage = globalThis.sessionStorage;
37+
38+
switch (type) {
39+
case 'localStorage-removeItem':
40+
fillStorage(localStorage, n);
41+
bench.start();
42+
for (let i = 0; i < n; i++) {
43+
localStorage.removeItem(i);
44+
}
45+
bench.end(n);
46+
break;
47+
case 'localStorage-delete':
48+
fillStorage(localStorage, n);
49+
bench.start();
50+
for (let i = 0; i < n; i++) {
51+
delete localStorage[i];
52+
}
53+
bench.end(n);
54+
break;
55+
case 'sessionStorage-removeItem':
56+
fillStorage(sessionStorage, n);
57+
bench.start();
58+
for (let i = 0; i < n; i++) {
59+
sessionStorage.removeItem(i);
60+
}
61+
bench.end(n);
62+
break;
63+
64+
case 'sessionStorage-delete':
65+
fillStorage(localStorage, n);
66+
bench.start();
67+
for (let i = 0; i < n; i++) {
68+
delete sessionStorage[i];
69+
}
70+
bench.end(n);
71+
break;
72+
default:
73+
new Error('Invalid type');
74+
}
75+
}

benchmark/webstorage/setItem.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
'use strict';
2+
const { join } = require('node:path');
3+
const common = require('../common.js');
4+
const tmpdir = require('../../test/common/tmpdir');
5+
6+
let cnt = 0;
7+
8+
tmpdir.refresh();
9+
10+
function nextLocalStorage() {
11+
return join(tmpdir.path, `${++cnt}.localstorage`);
12+
}
13+
14+
const options = {
15+
flags: ['--experimental-webstorage', `--localstorage-file=${nextLocalStorage()}`],
16+
};
17+
18+
const bench = common.createBenchmark(main, {
19+
type: ['localStorage-setItem',
20+
'localStorage-setter',
21+
'sessionStorage-setItem',
22+
'sessionStorage-setter'],
23+
// Note: web storage has only 10mb quota
24+
n: [1e5],
25+
}, options);
26+
27+
function main({ n, type }) {
28+
const localStorage = globalThis.localStorage;
29+
const sessionStorage = globalThis.sessionStorage;
30+
31+
switch (type) {
32+
case 'localStorage-setItem':
33+
bench.start();
34+
for (let i = 0; i < n; i++) {
35+
localStorage.setItem(i, i);
36+
}
37+
bench.end(n);
38+
break;
39+
case 'localStorage-setter':
40+
bench.start();
41+
for (let i = 0; i < n; i++) {
42+
localStorage[i] = i;
43+
}
44+
bench.end(n);
45+
break;
46+
case 'sessionStorage-setItem':
47+
bench.start();
48+
for (let i = 0; i < n; i++) {
49+
sessionStorage.setItem(i, i);
50+
}
51+
bench.end(n);
52+
break;
53+
case 'sessionStorage-setter':
54+
bench.start();
55+
for (let i = 0; i < n; i++) {
56+
sessionStorage[i] = i;
57+
}
58+
bench.end(n);
59+
break;
60+
default:
61+
new Error('Invalid type');
62+
}
63+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy