javascript - 如何测量 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 已用时间?
解决方案
推荐阅读
- bash - 如果我将输出通过管道传输到 tee,则无法“继续”
- java - 测试 Spring Boot 命令行应用程序
- ios - Firebase 动态链接应用关联文件更新
- apache-spark - 将数据从火花工作者返回给驱动程序的最佳方式
- ffmpeg - FFmpeg:如何打开名称中带有撇号的文件?
- sql-server - Python3 pypyodbc SQL Server 调用存储过程失败
- mysql - 泛化一个 sql 查询以适应完整和增量提取
- python - 在 python 中使用 SQLite3 时出现 TypeError
- python - 在 anaconda 中克隆基础环境
- python - 无法 pip install eel 。- 退出状态为 1 的命令出错:python setup.py egg_info 检查日志以获取完整的命令输出