mirror of
https://github.com/nodejs/node.git
synced 2026-10-14 10:26:26 -04:00
policy: add startup benchmark and make SRI lazier
PR-URL: https://github.com/nodejs/node/pull/29527 Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
1 parent
e212955e8a
commit
66810a0d47
4 files changed
+119
-33
No files matched your search
@@ -0,0 +1,51 @@
|
||||
// Tests the impact on eager operations required for policies affecting
|
||||
// general startup, does not test lazy operations
|
||||
'use strict';
|
||||
const common = require('../common.js');
|
||||
|
||||
const configs = {
|
||||
n: [1024]
|
||||
};
|
||||
|
||||
const options = {
|
||||
flags: ['--expose-internals']
|
||||
};
|
||||
|
||||
const bench = common.createBenchmark(main, configs, options);
|
||||
|
||||
function main(conf) {
|
||||
const hash = (str, algo) => {
|
||||
const hash = require('crypto').createHash(algo);
|
||||
return hash.update(str).digest('base64');
|
||||
};
|
||||
const resources = Object.fromEntries(
|
||||
// Simulate graph of 1k modules
|
||||
Array.from({ length: 1024 }, (_, i) => {
|
||||
return [`./_${i}`, {
|
||||
integrity: `sha256-${hash(`// ./_${i}`, 'sha256')}`,
|
||||
dependencies: Object.fromEntries(Array.from({
|
||||
// Average 3 deps per 4 modules
|
||||
length: Math.floor((i % 4) / 2)
|
||||
}, (_, ii) => {
|
||||
return [`_${ii}`, `./_${i - ii}`];
|
||||
})),
|
||||
}];
|
||||
})
|
||||
);
|
||||
const json = JSON.parse(JSON.stringify({ resources }), (_, o) => {
|
||||
if (o && typeof o === 'object') {
|
||||
Reflect.setPrototypeOf(o, null);
|
||||
Object.freeze(o);
|
||||
}
|
||||
return o;
|
||||
});
|
||||
const { Manifest } = require('internal/policy/manifest');
|
||||
|
||||
bench.start();
|
||||
|
||||
for (let i = 0; i < conf.n; i++) {
|
||||
new Manifest(json, 'file://benchmark/policy-relative');
|
||||
}
|
||||
|
||||
bench.end(conf.n);
|
||||
}
|
||||
Reference in new issue
Block a user