专栏名称: GitHubStore
分享有意思的开源项目
目录
相关文章推荐
51好读  ›  专栏  ›  GitHubStore

Mitata:专注于提供高精度基准测试工具的开源项目

GitHubStore  · 公众号  ·  · 2024-10-08 09:33

正文

项目简介


安装

bun add mitata

npm install mitata


建议

  • 使用专用硬件来运行基准测试

  • 在启用垃圾收集的情况下运行(例如 node --expose-gc ...

  • 确保您的运行时启用了高分辨率计时器和其他相关选项/权限


快速入门

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 }); // default formatawait run({ filter: /new Array.*/ }) // only run benchmarks that match regex filterawait run({ throw: true }); // will immediately throw instead of handling error quietly
// c++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






请到「今天看啥」查看全文