Skip to content

Commit 08f7307

Browse files
committed
Benchmark generatedPositionFor
1 parent 095a582 commit 08f7307

File tree

3 files changed

+168
-3
lines changed

3 files changed

+168
-3
lines changed

packages/trace-mapping/benchmark/index.mjs

Lines changed: 161 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ import { decode } from '@jridgewell/sourcemap-codec';
88
import {
99
TraceMap as CurrentTraceMap,
1010
traceSegment as currentTraceSegment,
11+
generatedPositionFor as currentGeneratedPositionFor,
1112
} from '../dist/trace-mapping.mjs';
1213
import {
1314
TraceMap as LatestTraceMap,
1415
traceSegment as latestTraceSegment,
15-
} from '../dist/trace-mapping.mjs';
16+
generatedPositionFor as latestGeneratedPositionFor,
17+
} from 'trace-map';
1618
import { SourceMapConsumer as SourceMapConsumerJs } from 'source-map-js';
1719
import { SourceMapConsumer as SourceMapConsumer061 } from 'source-map';
1820
import { SourceMapConsumer as SourceMapConsumerWasm } from 'source-map-wasm';
@@ -383,14 +385,171 @@ async function bench(file) {
383385
})
384386
.run({});
385387

388+
console.log('');
389+
390+
console.log('Generated Positions init:');
391+
const firstSource = currentDecoded.sources[0];
392+
benchmark = new Benchmark.Suite()
393+
.add('trace-mapping: decoded generatedPositionFor', () => {
394+
const decoded = new CurrentTraceMap(decodedMapData);
395+
currentGeneratedPositionFor(decoded, {
396+
source: firstSource,
397+
line: 6,
398+
column: 0,
399+
bias: 1,
400+
});
401+
})
402+
.add('trace-mapping: encoded generatedPositionFor', () => {
403+
const encoded = new CurrentTraceMap(encodedMapData);
404+
currentGeneratedPositionFor(encoded, {
405+
source: firstSource,
406+
line: 6,
407+
column: 0,
408+
bias: 1,
409+
});
410+
});
411+
if (diff) {
412+
benchmark = benchmark
413+
.add('trace-mapping latest: decoded generatedPositionFor', () => {
414+
const decoded = new LatestTraceMap(decodedMapData);
415+
latestGeneratedPositionFor(decoded, {
416+
source: firstSource,
417+
line: 6,
418+
column: 0,
419+
});
420+
})
421+
.add('trace-mapping latest: encoded generatedPositionFor', () => {
422+
const encoded = new LatestTraceMap(encodedMapData);
423+
latestGeneratedPositionFor(encoded, {
424+
source: firstSource,
425+
line: 6,
426+
column: 0,
427+
});
428+
});
429+
} else {
430+
benchmark = benchmark
431+
.add('source-map-js: encoded generatedPositionFor', () => {
432+
const smcjs = new SourceMapConsumerJs(encodedMapData);
433+
smcjs.generatedPositionFor({
434+
source: firstSource,
435+
line: 6,
436+
column: 0,
437+
});
438+
})
439+
.add('source-map-0.6.1: encoded generatedPositionFor', () => {
440+
const smc061 = new SourceMapConsumer061(encodedMapData);
441+
smc061.generatedPositionFor({
442+
source: firstSource,
443+
line: 6,
444+
column: 0,
445+
});
446+
})
447+
.add('source-map-0.8.0: encoded generatedPositionFor', () => {
448+
smcWasm.destroy();
449+
smcWasm.generatedPositionFor({
450+
source: firstSource,
451+
line: 6,
452+
column: 0,
453+
});
454+
})
455+
.add('Chrome dev tools: encoded generatedPositionFor', () => {
456+
const chromeMap = new ChromeMap('url', encodedMapData);
457+
chromeMap.findEntryReversed(firstSource, 6);
458+
});
459+
}
460+
// add listeners
461+
benchmark
462+
.on('error', (event) => console.error(event.target.error))
463+
.on('cycle', (event) => {
464+
console.log(String(event.target));
465+
})
466+
.on('complete', function () {
467+
console.log('Fastest is ' + this.filter('fastest').map('name'));
468+
})
469+
.run({});
470+
471+
console.log('');
472+
473+
console.log('Generated Positions speed:');
474+
benchmark = new Benchmark.Suite()
475+
.add('trace-mapping: decoded generatedPositionFor', () => {
476+
currentGeneratedPositionFor(currentDecoded, {
477+
source: firstSource,
478+
line: 6,
479+
column: 0,
480+
bias: 1,
481+
});
482+
})
483+
.add('trace-mapping: encoded generatedPositionFor', () => {
484+
currentGeneratedPositionFor(currentEncoded, {
485+
source: firstSource,
486+
line: 6,
487+
column: 0,
488+
bias: 1,
489+
});
490+
});
491+
if (diff) {
492+
benchmark = benchmark
493+
.add('trace-mapping latest: decoded generatedPositionFor', () => {
494+
latestGeneratedPositionFor(latestDecoded, {
495+
source: firstSource,
496+
line: 6,
497+
column: 0,
498+
});
499+
})
500+
.add('trace-mapping latest: encoded generatedPositionFor', () => {
501+
latestGeneratedPositionFor(latestEncoded, {
502+
source: firstSource,
503+
line: 6,
504+
column: 0,
505+
});
506+
});
507+
} else {
508+
benchmark = benchmark
509+
.add('source-map-js: encoded generatedPositionFor', () => {
510+
smcjs.generatedPositionFor({
511+
source: firstSource,
512+
line: 6,
513+
column: 0,
514+
});
515+
})
516+
.add('source-map-0.6.1: encoded generatedPositionFor', () => {
517+
smc061.generatedPositionFor({
518+
source: firstSource,
519+
line: 6,
520+
column: 0,
521+
});
522+
})
523+
.add('source-map-0.8.0: encoded generatedPositionFor', () => {
524+
smcWasm.generatedPositionFor({
525+
source: firstSource,
526+
line: 6,
527+
column: 0,
528+
});
529+
})
530+
.add('Chrome dev tools: encoded generatedPositionFor', () => {
531+
chromeMap.findEntryReversed(firstSource, 6);
532+
});
533+
}
534+
// add listeners
535+
benchmark
536+
.on('error', (event) => console.error(event.target.error))
537+
.on('cycle', (event) => {
538+
console.log(String(event.target));
539+
})
540+
.on('complete', function () {
541+
console.log('Fastest is ' + this.filter('fastest').map('name'));
542+
})
543+
.run({});
544+
386545
if (smcWasm) smcWasm.destroy();
387546
}
388547

389548
async function run(files) {
390549
let first = true;
391550
for (const file of files) {
392551
if (!file.endsWith('.map')) continue;
393-
if (file !== 'vscode.map') continue;
552+
if (file !== 'issue-41.js.map') continue;
394553

395554
if (!first) console.log('\n\n***\n\n');
396555
first = false;

packages/trace-mapping/benchmark/issue-41.js.map

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/trace-mapping/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"scripts": {
3434
"benchmark": "run-s build:code benchmark:*",
3535
"benchmark:install": "cd benchmark && npm install",
36-
"benchmark:only": "node --expose-gc benchmark/index.js",
36+
"benchmark:only": "node --expose-gc benchmark/index.mjs",
3737
"build": "run-s -n build:code build:types",
3838
"build:code": "node ../../esbuild.mjs trace-mapping.ts",
3939
"build:types": "run-s build:types:force build:types:emit build:types:mts",

0 commit comments

Comments
 (0)