Skip to content

Instantly share code, notes, and snippets.

@jridgewell
Last active January 24, 2025 23:05
Show Gist options
  • Save jridgewell/96c6b7078a3f9873e0ae09aa342015ad to your computer and use it in GitHub Desktop.
Save jridgewell/96c6b7078a3f9873e0ae09aa342015ad to your computer and use it in GitHub Desktop.
Forming graph from arrays: regular vs frozen (https://jsbench.github.io/#96c6b7078a3f9873e0ae09aa342015ad) #jsbench #jsperf
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Forming graph from arrays: regular vs frozen</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 array = [
{ "id": "quantum", "deps": [] },
{ "id": "t7xgIe", "deps": [] },
{ "id": "ws9Tlc", "deps": [] },
{ "id": "cEt90b", "deps": [] },
{ "id": "qddgKe", "deps": [] },
{ "id": "yxTchf", "deps": [] },
{ "id": "sy7u", "deps": [] },
{ "id": "sy7v", "deps": [ "sy7u" ] },
{ "id": "sy7w", "deps": [] },
{ "id": "xQtZb", "deps": [ "sy7w", "sy7v", "yxTchf" ] },
{ "id": "sy7x", "deps": [] },
{ "id": "R9YHJc", "deps": [ "sy7x", "sy7v" ] },
{ "id": "KUM7Z", "deps": [] },
{ "id": "wrzEXb", "deps": [] },
{ "id": "TxCJfd", "deps": [] },
{ "id": "WVDyKe", "deps": [] },
{ "id": "sy7y", "deps": [] },
{ "id": "Vj9hpd", "deps": [ "sy7y", "WVDyKe" ] },
{ "id": "tafPrf", "deps": [] },
{ "id": "dtl0hd", "deps": [] },
{ "id": "lLQWFe", "deps": [] },
{ "id": "Il1M4b", "deps": [] },
{ "id": "eHDfl", "deps": [] },
{ "id": "FONEdf", "deps": [ "dtl0hd" ] },
{ "id": "JiVLjd", "deps": [ "dtl0hd" ] },
{ "id": "FAUdW", "deps": [ "dtl0hd" ] },
{ "id": "Z1Rg0", "deps": [] },
{ "id": "dMZk3e", "deps": [ "eHDfl" ] },
{ "id": "ofjVkb", "deps": [] },
{ "id": "qaS3gd", "deps": [] },
{ "id": "T9y5Dd", "deps": [] },
{ "id": "yiLg6e", "deps": [] },
{ "id": "Q7BaEe", "deps": [] },
{ "id": "tRaZif", "deps": [ "T9y5Dd" ] },
{ "id": "F2pEhc", "deps": [] },
{ "id": "n73qwf", "deps": [] },
{ "id": "UUJqVe", "deps": [] },
{ "id": "MpJwZc", "deps": [] },
{ "id": "nAFL3", "deps": [] },
{ "id": "sy80", "deps": [] },
{ "id": "NTMZac", "deps": [ "sy80" ] },
{ "id": "sy81", "deps": [] },
{ "id": "sOXFj", "deps": [ "sy81" ] },
{ "id": "oGtAuc", "deps": [] },
{ "id": "sy84", "deps": [] },
{ "id": "byfTOb", "deps": [ "sy84" ] },
{ "id": "sy86", "deps": [] },
{ "id": "sy87", "deps": [] },
{ "id": "sy88", "deps": [ "sy87" ] },
{ "id": "sy89", "deps": [] },
{ "id": "LEikZe", "deps": [ "sy89", "sy88", "sy86", "sy84" ] },
{ "id": "sy8b", "deps": [] },
{ "id": "xUdipf", "deps": [ "sy8b" ] },
{ "id": "sy8c", "deps": [ "sy8b" ] },
{ "id": "sy8g", "deps": [] },
{ "id": "sy8f", "deps": [ "sy8g", "sy8c" ] },
{ "id": "sy8h", "deps": [] },
{ "id": "NwH0H", "deps": [ "sy8f", "xUdipf" ] },
{ "id": "sy8i", "deps": [] },
{ "id": "sy8j", "deps": [] },
{ "id": "gychg", "deps": [ "sy8j", "sy8i", "NwH0H", "LEikZe" ] },
{ "id": "Ulmmrd", "deps": [ "gychg" ] },
{ "id": "rJmJrc", "deps": [ "sy87" ] },
{ "id": "GHAeAc", "deps": [] },
{ "id": "Wt6vjf", "deps": [ "sy87" ] },
{ "id": "lsjVmc", "deps": [ "sy86" ] },
{ "id": "sy8k", "deps": [] },
{ "id": "sy8l", "deps": [ "sy8k" ] },
{ "id": "IZT63", "deps": [ "sy8l" ] },
{ "id": "Vgd6hb", "deps": [] },
{ "id": "sy8m", "deps": [] },
{ "id": "YNjGDd", "deps": [ "sy8m" ] },
{ "id": "iFQyKf", "deps": [] },
{ "id": "sy8p", "deps": [ "sy8m", "sy8l" ] },
{ "id": "PrPYRd", "deps": [ "sy8p", "YNjGDd", "IZT63" ] },
{ "id": "sy8s", "deps": [] },
{ "id": "vfuNJf", "deps": [ "sy8s" ] },
{ "id": "sy8t", "deps": [] },
{ "id": "hc6Ubd", "deps": [ "sy8t", "vfuNJf", "PrPYRd", "iFQyKf" ] },
{ "id": "sy8u", "deps": [] },
{ "id": "sy8v", "deps": [] },
{ "id": "sy8w", "deps": [] },
{ "id": "q0xTif", "deps": [ "sy8w", "sy8v", "sy8u", "PrPYRd", "oGtAuc", "sy81", "sy80", "nAFL3" ] },
{ "id": "rLpdIf", "deps": [] },
{ "id": "w9hDv", "deps": [ "NwH0H" ] },
{ "id": "JNoxi", "deps": [ "w9hDv", "Ulmmrd" ] },
{ "id": "SNUn3", "deps": [] },
{ "id": "ZwDk9d", "deps": [ "sy8b" ] },
{ "id": "RMhBfe", "deps": [] },
{ "id": "Ug7Xab", "deps": [] },
{ "id": "U0aPgd", "deps": [ "Ug7Xab" ] },
{ "id": "qafBPd", "deps": [] },
{ "id": "io8t5d", "deps": [ "qafBPd" ] },
{ "id": "sy8y", "deps": [] },
{ "id": "ebZ3mb", "deps": [ "sy8y", "qafBPd", "Ug7Xab" ] },
{ "id": "KG2eXe", "deps": [ "ebZ3mb" ] },
{ "id": "dowIGb", "deps": [] },
];
window.sealed = false;
};
suite.add("Unsealed Object.prototype", function () {
// Unsealed Object.prototype
let graph = {};
for (const mod of array) {
const deps = mod.deps.map(id => graph[id]);
graph[mod.id] = { id: mod.id, deps };
}
});
suite.add("Sealed Object.prototype", function () {
// Sealed Object.prototype
if (!window.sealed) {
Object.seal(Object.prototype);
window.sealed = true;
}
let graph = {};
for (const mod of array) {
const deps = mod.deps.map(id => graph[id]);
graph[mod.id] = { id: mod.id, deps };
}
});
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("Forming graph from arrays: regular vs frozen");
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