Time 如何衡量npm/纱线任务/脚本的执行时间?

Time 如何衡量npm/纱线任务/脚本的执行时间?,time,npm,task,measure,yarnpkg,Time,Npm,Task,Measure,Yarnpkg,在不修改脚本的情况下,如何在命令行上测量npm/Thread任务的执行时间 在我的特殊用例中,我希望执行现有的E2E测试(纱线测试:E2E)100次,并取平均值。您可以使用npm包: 一个命令行实用程序,有点像moreutils的ts,用于将时间戳信息预先添加到另一个命令的标准输出中 按如下方式安装: $ npm i -g gnomon $ yarn install | gnomon 0.5327s yarn install v1.9.4 1.9652s [1/4] Re

在不修改脚本的情况下,如何在命令行上测量npm/Thread任务的执行时间


在我的特殊用例中,我希望执行现有的E2E测试(纱线测试:E2E)100次,并取平均值。

您可以使用npm包:

一个命令行实用程序,有点像moreutils的ts,用于将时间戳信息预先添加到另一个命令的标准输出中

按如下方式安装:

$ npm i -g gnomon
$ yarn install | gnomon 
   0.5327s   yarn install v1.9.4
   1.9652s   [1/4] Resolving packages...
   0.0160s   success Already up-to-date.
   0.0163s   Done in 2.38s.
   0.0003s   

     Total   2.5315s
有了它,您可以运行:

$ yarn install | gnomon
它可能会为您提供如下输出:

$ npm i -g gnomon
$ yarn install | gnomon 
   0.5327s   yarn install v1.9.4
   1.9652s   [1/4] Resolving packages...
   0.0160s   success Already up-to-date.
   0.0163s   Done in 2.38s.
   0.0003s   

     Total   2.5315s

如果您不希望对此有任何全局或甚至本地依赖关系,或者您不希望只在unixy操作系统上工作,那么使用简单的.js文件和同样简单的npm脚本优化几乎可以实现这一点:

{
  ...
  "scripts: {
    "time": "node mark.js",
    "start": "npm run time && ...whatever 'start' was before... && npm run time",
  },
  ...
}
其中,
mark.js
文件是几乎微不足道的以下代码:

const fs = require("fs"); // or import fs from "fs"; if you're working on modern JS

const timingFile = `.timing`;

if(fs.existsSync(timingFile)) {
  const end = Date.now();
  const start = fs.readFileSync(timingFile);
  fs.unlinkSync(timingFile);
  console.log(`Runtime: ${(end - start)/1000}s`);
} else { fs.writeFileSync(timingFile, `${Date.now()}`, `utf8`); }

在unix中使用以下命令

time npm run build
对于windows,请使用此命令

Measure-Command { start-process npm 'run build' -wait}

是什么意思?
是Unix的管道操作符,这里的详细信息:注意:特定于powershell,这意味着任何使用
cmd
实现最大跨平台兼容性的人仍然没有解决方案(
cmd
支持
&
,例如,在节点脚本的世界中是必不可少的)