首页 > 解决方案 > 如何测量 Node.js 中 JS 代码执行的 CPU 时间以进行基准测试?

问题描述

我有一个函数可以对任意 JS 函数调用进行简单的性能基准测试,如下所示:

function benchmark(f) {
   var startTime = Date.now();
   f();
   var endTime = Date.now();
   console.log('Elapsed: %d ms', endTime - startTime);
}

我用它测试的功能通常需要 2-5 秒才能执行,因此计算对 Date.now() 的一次完整调用的开销可以忽略不计。

尽管如此,基准测试时间会根据我的机器上碰巧运行的其他进程有很大差异,因此即使我多次运行基准测试并取最小值,我仍然可以看到连续(集of) 运行——即使机器“大部分”空闲。这使得很难看到 <5% 的性能变化。

我最终不得不观看活动监视器并等到系统看起来(大部分)空闲,然后希望在运行过程中没有其他任何东西启动。相反,我想修改基准以测量经过的 CPU 时间而不是经过的挂墙时间。这应该使它对在 I/O 上被阻塞几乎不敏感,并且对 CPU 争用不敏感(尽管不是不敏感:由于超线程,我希望如果可运行线程的数量超过物理 CPU 核心的数量,那么表观性能将随着超线程争夺实际硬件而减少)。

如何node从 Node 中查询进程的 CPU 已用时间?

标签: javascriptnode.jscpu-usagemicrobenchmark

解决方案


推荐阅读