Last active
January 24, 2025 23:05
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!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> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"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