Skip to content

Commit 5bc828b

Browse files
miguelmarcondesfaduh95
authored andcommitted
benchmark: add source map and source map cache
PR-URL: #58125 Reviewed-By: Chengzhong Wu <legendecas@gmail.com> Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
1 parent 48003e8 commit 5bc828b

3 files changed

Lines changed: 162 additions & 0 deletions

File tree

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
'use strict';
2+
3+
constcommon=require('../common.js');
4+
constassert=require('assert');
5+
constfixtures=require('../../test/common/fixtures');
6+
7+
constbench=common.createBenchmark(
8+
main,
9+
{
10+
operation: [
11+
'findSourceMap-valid',
12+
'findSourceMap-generated-source',
13+
],
14+
n: [1e5],
15+
},
16+
);
17+
18+
functionmain({ operation, n }){
19+
constModule=require('node:module');
20+
21+
Module.setSourceMapsSupport(true,{
22+
generatedCode: true,
23+
});
24+
constvalidFileName=fixtures.path('test-runner/source-maps/line-lengths/index.js');
25+
26+
constfileNameKey='/source-map/disk.js';
27+
constgeneratedFileName=fixtures.path(fileNameKey);
28+
constgeneratedFileContent=fixtures.readSync(fileNameKey,'utf8');
29+
constsourceMapUrl=generatedFileName.replace(/\.js$/,'.map');
30+
constsourceWithGeneratedSourceMap=
31+
`${generatedFileContent}\n//# sourceMappingURL=${sourceMapUrl}\n//# sourceURL=${generatedFileName}`;
32+
constgeneratedExpectedUrl=`file://${generatedFileName}`;
33+
34+
letsourceMap;
35+
switch(operation){
36+
case'findSourceMap-valid':
37+
require(validFileName);
38+
39+
bench.start();
40+
for(leti=0;i<n;i++){
41+
sourceMap=Module.findSourceMap(validFileName);
42+
}
43+
bench.end(n);
44+
break;
45+
46+
case'findSourceMap-generated-source':
47+
eval(sourceWithGeneratedSourceMap);
48+
49+
bench.start();
50+
for(leti=0;i<n;i++){
51+
sourceMap=Module.findSourceMap(generatedExpectedUrl);
52+
}
53+
bench.end(n);
54+
break;
55+
56+
default:
57+
thrownewError(`Unknown operation: ${operation}`);
58+
}
59+
assert.ok(sourceMap);
60+
}

‎benchmark/source_map/source-map.js‎

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
'use strict';
2+
3+
constcommon=require('../common.js');
4+
constassert=require('assert');
5+
constfixtures=require('../../test/common/fixtures');
6+
7+
constbench=common.createBenchmark(
8+
main,
9+
{
10+
operation: [
11+
'parse',
12+
'parse-sectioned',
13+
'findEntry',
14+
'findEntry-sectioned',
15+
'findOrigin',
16+
'findOrigin-sectioned',
17+
],
18+
n: [1e5],
19+
},
20+
);
21+
22+
functionmain({ operation, n }){
23+
const{ SourceMap }=require('node:module');
24+
25+
constsamplePayload=JSON.parse(
26+
fixtures.readSync('source-map/no-source.js.map','utf8'),
27+
);
28+
constsectionedPayload=JSON.parse(
29+
fixtures.readSync('source-map/disk-index.map','utf8'),
30+
);
31+
32+
letsourceMap;
33+
letsourceMapMethod;
34+
switch(operation){
35+
case'parse':
36+
bench.start();
37+
for(leti=0;i<n;i++){
38+
sourceMap=newSourceMap(samplePayload);
39+
}
40+
bench.end(n);
41+
break;
42+
43+
case'parse-sectioned':
44+
bench.start();
45+
for(leti=0;i<n;i++){
46+
sourceMap=newSourceMap(sectionedPayload);
47+
}
48+
bench.end(n);
49+
break;
50+
51+
case'findEntry':
52+
sourceMap=newSourceMap(samplePayload);
53+
bench.start();
54+
for(leti=0;i<n;i++){
55+
sourceMapMethod=sourceMap.findEntry(i,i);
56+
}
57+
bench.end(n);
58+
assert.ok(sourceMapMethod);
59+
break;
60+
61+
case'findEntry-sectioned':
62+
sourceMap=newSourceMap(sectionedPayload);
63+
bench.start();
64+
for(leti=0;i<n;i++){
65+
sourceMapMethod=sourceMap.findEntry(i,i);
66+
}
67+
bench.end(n);
68+
assert.ok(sourceMapMethod);
69+
break;
70+
71+
case'findOrigin':
72+
sourceMap=newSourceMap(samplePayload);
73+
bench.start();
74+
for(leti=0;i<n;i++){
75+
sourceMapMethod=sourceMap.findOrigin(i,i);
76+
}
77+
bench.end(n);
78+
assert.ok(sourceMapMethod);
79+
break;
80+
81+
case'findOrigin-sectioned':
82+
sourceMap=newSourceMap(sectionedPayload);
83+
bench.start();
84+
for(leti=0;i<n;i++){
85+
sourceMapMethod=sourceMap.findOrigin(i,i);
86+
}
87+
bench.end(n);
88+
assert.ok(sourceMapMethod);
89+
break;
90+
91+
default:
92+
thrownewError(`Unknown operation: ${operation}`);
93+
}
94+
assert.ok(sourceMap);
95+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
'use strict';
2+
3+
require('../common');
4+
5+
construnBenchmark=require('../common/benchmark');
6+
7+
runBenchmark('source_map',{NODEJS_BENCHMARK_ZERO_ALLOWED: 1});

0 commit comments

Comments
 (0)