Skip to content

Instantly share code, notes, and snippets.

@jridgewell
Last active December 15, 2023 22:03
Show Gist options
  • Save jridgewell/94c46cc814cab852a54aef37c56d59c4 to your computer and use it in GitHub Desktop.
Save jridgewell/94c46cc814cab852a54aef37c56d59c4 to your computer and use it in GitHub Desktop.
Source Map encode with TypedArrays (https://jsbench.github.io/#94c46cc814cab852a54aef37c56d59c4) #jsbench #jsperf
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Source Map encode with TypedArrays</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/benchmark/1.0.0/benchmark.min.js"></script>
<script src="./suite.js"></script>
</head>
<body>
<h1>Open the console to view the results</h1>
<h2><code>cmd + alt + j</code> or <code>ctrl + alt + j</code></h2>
</body>
</html>
"use strict";
(function (factory) {
if (typeof Benchmark !== "undefined") {
factory(Benchmark);
} else {
factory(require("benchmark"));
}
})(function (Benchmark) {
var suite = new Benchmark.Suite;
Benchmark.prototype.setup = function () {
const comma = ','.charCodeAt(0);
const semicolon = ';'.charCodeAt(0);
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
const intToChar = new Uint8Array(64); // 64 possible chars.
const charToInt = new Uint8Array(128); // z is 122 in ASCII
for (let i = 0; i < chars.length; i++) {
const c = chars.charCodeAt(i);
intToChar[i] = c;
charToInt[c] = i;
}
// Provide a fallback for older environments.
const td = typeof TextDecoder !== 'undefined'
? /* #__PURE__ */ new TextDecoder() : {
decode(buf) {
let out = '';
for (let i = 0; i < buf.length; i++) {
out += String.fromCharCode(buf[i]);
}
return out;
},
};
function decode(mappings) {
const state = new Int32Array(5);
const decoded = [];
let index = 0;
do {
const semi = indexOf(mappings, index);
const line = [];
let sorted = true;
let lastCol = 0;
state[0] = 0;
for (let i = index; i < semi; i++) {
let seg;
i = decodeInteger(mappings, i, state, 0); // genColumn
const col = state[0];
if (col < lastCol)
sorted = false;
lastCol = col;
if (hasMoreVlq(mappings, i, semi)) {
i = decodeInteger(mappings, i, state, 1); // sourcesIndex
i = decodeInteger(mappings, i, state, 2); // sourceLine
i = decodeInteger(mappings, i, state, 3); // sourceColumn
if (hasMoreVlq(mappings, i, semi)) {
i = decodeInteger(mappings, i, state, 4); // namesIndex
seg = [col, state[1], state[2], state[3], state[4]];
}
else {
seg = [col, state[1], state[2], state[3]];
}
}
else {
seg = [col];
}
line.push(seg);
}
if (!sorted)
sort(line);
decoded.push(line);
index = semi + 1;
} while (index <= mappings.length);
return decoded;
}
function indexOf(mappings, index) {
const idx = mappings.indexOf(';', index);
return idx === -1 ? mappings.length : idx;
}
function decodeInteger(mappings, pos, state, j) {
let value = 0;
let shift = 0;
let integer = 0;
do {
const c = mappings.charCodeAt(pos++);
integer = charToInt[c];
value |= (integer & 31) << shift;
shift += 5;
} while (integer & 32);
const shouldNegate = value & 1;
value >>>= 1;
if (shouldNegate) {
value = -0x80000000 | -value;
}
state[j] += value;
return pos;
}
function hasMoreVlq(mappings, i, length) {
if (i >= length)
return false;
return mappings.charCodeAt(i) !== comma;
}
function sort(line) {
line.sort(sortComparator);
}
function sortComparator(a, b) {
return a[0] - b[0];
}
function encodeInteger(buf, pos, state, segment, j) {
const next = segment[j];
let num = next - state[j];
state[j] = next;
num = num < 0 ? (-num << 1) | 1 : num << 1;
do {
let clamped = num & 0b011111;
num >>>= 5;
if (num > 0)
clamped |= 0b100000;
buf[pos++] = intToChar[clamped];
} while (num > 0);
return pos;
}
const bufLength = 1024;
const subLength = bufLength - 36;
function encodeSingle(decoded) {
const state = new Int32Array(5);
const buf = new Uint8Array(bufLength);
const sub = buf.subarray(0, subLength);
let pos = 0;
let out = '';
for (let i = 0; i < decoded.length; i++) {
const line = decoded[i];
if (i > 0) {
if (pos === bufLength) {
out += td.decode(buf);
pos = 0;
}
buf[pos++] = semicolon;
}
if (line.length === 0)
continue;
state[0] = 0;
for (let j = 0; j < line.length; j++) {
const segment = line[j];
// We can push up to 5 ints, each int can take at most 7 chars, and we
// may push a comma.
if (pos > subLength) {
out += td.decode(sub);
buf.copyWithin(0, subLength, pos);
pos -= subLength;
}
if (j > 0)
buf[pos++] = comma;
pos = encodeInteger(buf, pos, state, segment, 0); // genColumn
if (segment.length === 1)
continue;
pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex
pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine
pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn
if (segment.length === 4)
continue;
pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex
}
}
return out + td.decode(buf.subarray(0, pos));
}
function encodeMultiple(decoded) {
const state = new Int32Array(5);
const buf = new Uint8Array(bufLength);
let pos = 0;
let out = '';
for (let i = 0; i < decoded.length; i++) {
const line = decoded[i];
if (i > 0) {
if (pos === bufLength) {
out += td.decode(buf);
pos = 0;
}
buf[pos++] = semicolon;
}
if (line.length === 0)
continue;
state[0] = 0;
for (let j = 0; j < line.length; j++) {
const segment = line[j];
// We can push up to 5 ints, each int can take at most 7 chars, and we
// may push a comma.
if (pos > subLength) {
out += td.decode(buf.subarray(0, pos));
pos = 0;
}
if (j > 0)
buf[pos++] = comma;
pos = encodeInteger(buf, pos, state, segment, 0); // genColumn
if (segment.length === 1)
continue;
pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex
pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine
pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn
if (segment.length === 4)
continue;
pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex
}
}
return out + td.decode(buf.subarray(0, pos));
}
const mappings = decode("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");
};
suite.add("Encoding using a single subarray", function () {
// Encoding using a single subarray
encodeSingle(mappings);
});
suite.add("Encoding using a throwaway subarrays", function () {
// Encoding using a throwaway subarrays
encodeMultiple(mappings);
});
suite.on("cycle", function (evt) {
console.log(" - " + evt.target);
});
suite.on("complete", function (evt) {
console.log(new Array(30).join("-"));
var results = evt.currentTarget.sort(function (a, b) {
return b.hz - a.hz;
});
results.forEach(function (item) {
console.log((idx + 1) + ". " + item);
});
});
console.log("Source Map encode with TypedArrays");
console.log(new Array(30).join("-"));
suite.run();
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment