项目简介
安装
bun add mitata
npm install mitata
建议
快速入门
javascript
import { run, bench, boxplot } from 'mitata';
function fibonacci(n) {
if (n <= 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
bench('fibonacci(40)', () => fibonacci(40));
boxplot(() => {
bench('new Array($size)', function* (state) {
const size = state.get('size');
yield () => Array.from({ length: size });
}).range('size', 1, 1024);
});
await run();
C++ 单头文件
#include "src/mitata.hpp"
int fibonacci(int n) {
if (n <= 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main() {
mitata::runner runner;
runner.bench("noop", []() { });
runner.summary([&]() {
runner.bench("empty fn", []() { });
runner.bench("fibonacci", []() { fibonacci(20); });
});
auto stats = runner.run();
}
配置您的体验
import { run } from 'mitata';
await run({ format: 'mitata', colors: false });
await run({ filter: /new Array.*/ })
await run({ throw: true });
auto stats = runner.run({ .colors = true, .format = "json", .filter = std::regex(".*") });
自动垃圾收集
在公开 gc 的运行时(例如,bun、
node --expose-gc ...
),mitata 将在每个基准测试之前自动运行垃圾收集。
通用兼容性
开箱即用的 mitata 可以检测其运行的引擎/运行时,并回退到使用替代的非标准 I/O 函数。如果您的引擎或运行时缺少支持,请提出问题或公关请求支持。
如何将 mitata 与 d8、jsc、graaljs、spidermonkey 等引擎 CLI 一起使用
$ xs bench.mjs
$ quickjs bench.mjs
$ d8 --expose-gc bench.mjs
$ spidermonkey -m bench.mjs
$ graaljs --js.timer-resolution=1 bench.mjs
$ /System/Library/Frameworks/JavaScriptCore.framework/Versions/Current/Helpers/jsc bench.mjs