Files
2026-07-13 12:25:07 +08:00

81 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). ┃
// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
const fs = require("fs");
import * as all_benchmarks from "./cross_platform_suite.mjs";
import * as perspective_bench from "./src/js/benchmark.mjs";
/**
* We use the `dependencies` of this package for the benchmark candidate
* module list, so that we only need specify the dependencies and benchmark
* candidates in one place.
*/
const VERSIONS = Object.keys(
JSON.parse(fs.readFileSync(require.resolve(`./package.json`))).dependencies,
);
perspective_bench.suite(
// ["@perspective-dev/client", ...VERSIONS],
[...VERSIONS],
async function (path, version_idx) {
let perspective = await import(path);
perspective = perspective.default || perspective;
const pkg_json = JSON.parse(
fs.readFileSync(require.resolve(`${path}/package.json`)),
);
let version = pkg_json.version;
console.log(`${path} (${pkg_json.name}@${version})`);
if (version_idx === 0) {
version = `${version} (master)`;
}
const metadata = { version, version_idx };
await all_benchmarks.table_suite(perspective, metadata);
// await all_benchmarks.view_suite(perspective, metadata);
// await all_benchmarks.to_data_suite(perspective, metadata);
},
async function (path) {
let psp = await import(path);
psp = psp.default || psp;
// const port = Math.floor(Math.random() * 1000) + 1000;
const server = new psp.WebSocketServer({
port: 8080,
});
function buffer_to_arraybuffer(buffer) {
return new Int8Array(
buffer.buffer.slice(
buffer.byteOffset,
buffer.byteOffset + buffer.length,
),
);
}
const table = await psp.table(
buffer_to_arraybuffer(
fs.readFileSync(
"../../node_modules/superstore-arrow/superstore.arrow",
),
).buffer,
{ name: "superstore" },
);
// // Legacy compat
if (server.host_table) {
server.host_table("superstore", table);
}
return server;
},
);