Files
perspective-dev--perspective/tools/bench/python_suite.mjs
T
2026-07-13 12:25:07 +08:00

80 lines
4.0 KiB
JavaScript

// ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
// ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
// ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
// ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
// ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
// ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
// ┃ Copyright (c) 2017, the Perspective Authors. ┃
// ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
// ┃ This file is part of the Perspective library, distributed under the terms ┃
// ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
/**
* @module python_suite
*
* Run the Python benchmarks against hte Node.js client.
*/
import * as fs from "node:fs";
import * as path from "node:path";
import * as url from "node:url";
import * as python from "./src/js/servers/python.mjs";
import * as all_benchmarks from "./cross_platform_suite.mjs";
import * as perspective_bench from "./src/js/benchmark.mjs";
const __dirname = url.fileURLToPath(new URL(".", import.meta.url)).slice(0, -1);
const CLIENT_VERSION = {
master: "@perspective-dev/client",
"4.5.1": "perspective-4-5-1",
"4.5.0": "perspective-4-5-0",
"4.4.0": "perspective-4-4-0",
"4.3.0": "perspective-4-3-0",
"4.2.0": "perspective-4-2-0",
"4.1.0": "perspective-4-1-0",
"4.0.0": "perspective-4-0-0",
"3.8.0": "perspective-3-8-0",
"3.6.0": "perspective-3-6-0",
"3.5.0": "perspective-3-5-0",
"3.4.0": "perspective-3-4-0",
"3.3.0": "perspective-3-3-0",
"3.2.0": "perspective-3-2-0",
"3.1.0": "perspective-3-1-0",
"3.0.3": "perspective-3-0-0",
"2.10.1": "perspective-2-10-0",
"2.9.0": "perspective-2-9-0",
"2.8.0": "perspective-2-8-0",
"2.7.0": "perspective-2-7-0",
"2.6.0": "perspective-2-6-0",
"2.5.0": "perspective-2-5-0",
"2.4.0": "perspective-2-4-0",
"2.3.2": "perspective-2-3-0",
"2.3.1": "perspective-2-3-0",
};
fs.mkdirSync(path.join(__dirname, "./dist"), { recursive: true });
perspective_bench.suite(
[...Object.keys(CLIENT_VERSION)],
path.join(__dirname, "dist/benchmark-python.arrow"),
async function (version, version_idx) {
console.log(version);
const { default: perspective } = await import(CLIENT_VERSION[version]);
const client = await perspective.websocket(
"ws://127.0.0.1:8082/websocket",
{ maxPayload: 1024 * 1024 * 1024 },
);
const metadata = { version, version_idx };
globalThis.__SEND__ = (x) => process.send(x);
await all_benchmarks.table_suite(client, metadata);
await all_benchmarks.view_suite(client, metadata);
await all_benchmarks.to_data_suite(client, metadata);
await all_benchmarks.join_suite(client, metadata);
},
python.start,
python.stop,
);