Upload Kmake

This commit is contained in:
Gorochu
2026-05-26 23:36:42 -07:00
parent ba051b2f74
commit 555ec72358
41615 changed files with 13344630 additions and 1 deletions

View File

@ -0,0 +1,18 @@
'use strict';
if (typeof SharedArrayBuffer === 'undefined') {
throw new Error('SharedArrayBuffers must be enabled to run this benchmark');
}
const common = require('../common.js');
const bench = common.createBenchmark(main, {
n: [1e7],
});
function main({ n }) {
const i32arr = new Int32Array(new SharedArrayBuffer(4));
bench.start();
for (let i = 0; i < n; i++)
Atomics.wait(i32arr, 0, 1); // Will return immediately.
bench.end(n);
}

View File

@ -0,0 +1,61 @@
'use strict';
const common = require('../common.js');
const { Worker, parentPort } = require('worker_threads');
if (process.argv[2] === 'idle cats') {
return parentPort.once('message', () => {});
}
const bench = common.createBenchmark(main, {
n: [1e6],
method: [
'ELU_simple',
'ELU_passed',
],
});
function main({ method, n }) {
switch (method) {
case 'ELU_simple':
benchELUSimple(n);
break;
case 'ELU_passed':
benchELUPassed(n);
break;
default:
throw new Error(`Unsupported method ${method}`);
}
}
function benchELUSimple(n) {
const worker = new Worker(__filename, { argv: ['idle cats'] });
spinUntilIdle(worker, () => {
bench.start();
for (let i = 0; i < n; i++)
worker.performance.eventLoopUtilization();
bench.end(n);
worker.postMessage('bye');
});
}
function benchELUPassed(n) {
const worker = new Worker(__filename, { argv: ['idle cats'] });
spinUntilIdle(worker, () => {
let elu = worker.performance.eventLoopUtilization();
bench.start();
for (let i = 0; i < n; i++)
elu = worker.performance.eventLoopUtilization(elu);
bench.end(n);
worker.postMessage('bye');
});
}
function spinUntilIdle(w, cb) {
const t = w.performance.eventLoopUtilization();
if (t.idle + t.active > 0)
return process.nextTick(cb);
setTimeout(() => spinUntilIdle(w, cb), 1);
}

69
benchmark/worker/echo.js Normal file
View File

@ -0,0 +1,69 @@
'use strict';
const common = require('../common.js');
const { Worker } = require('worker_threads');
const path = require('path');
const bench = common.createBenchmark(main, {
workers: [1],
payload: ['string', 'object'],
sendsPerBroadcast: [1, 10],
n: [1e5],
});
const workerPath = path.resolve(__dirname, '..', 'fixtures', 'echo.worker.js');
function main({ n, workers, sendsPerBroadcast: sends, payload: payloadType }) {
const expectedPerBroadcast = sends * workers;
let payload;
let readies = 0;
let broadcasts = 0;
let msgCount = 0;
switch (payloadType) {
case 'string':
payload = 'hello world!';
break;
case 'object':
payload = { action: 'pewpewpew', powerLevel: 9001 };
break;
default:
throw new Error('Unsupported payload type');
}
const workerObjs = [];
for (let i = 0; i < workers; ++i) {
const worker = new Worker(workerPath);
workerObjs.push(worker);
worker.on('online', onOnline);
worker.on('message', onMessage);
}
function onOnline() {
if (++readies === workers) {
bench.start();
broadcast();
}
}
function broadcast() {
if (broadcasts++ === n) {
bench.end(n);
for (const worker of workerObjs) {
worker.unref();
}
return;
}
for (const worker of workerObjs) {
for (let i = 0; i < sends; ++i)
worker.postMessage(payload);
}
}
function onMessage() {
if (++msgCount === expectedPerBroadcast) {
msgCount = 0;
broadcast();
}
}
}

View File

@ -0,0 +1,55 @@
'use strict';
const common = require('../common.js');
const { MessageChannel } = require('worker_threads');
const bench = common.createBenchmark(main, {
payload: ['string', 'object'],
style: ['eventtarget', 'eventemitter'],
n: [1e6],
});
function main(conf) {
const n = conf.n;
let payload;
switch (conf.payload) {
case 'string':
payload = 'hello world!';
break;
case 'object':
payload = { action: 'pewpewpew', powerLevel: 9001 };
break;
default:
throw new Error('Unsupported payload type');
}
const { port1, port2 } = new MessageChannel();
let messages = 0;
function listener() {
if (messages++ === n) {
bench.end(n);
port1.close();
} else {
write();
}
}
switch (conf.style) {
case 'eventtarget':
port2.onmessage = listener;
break;
case 'eventemitter':
port2.on('message', listener);
break;
default:
throw new Error('Unsupported listener type');
}
bench.start();
write();
function write() {
port1.postMessage(payload);
}
}