如何测量 npm/yarn task/script 的执行时间?
How can I measure the execution time of a npm/yarn task/script?
如何在不修改脚本的情况下在命令行上测量 npm/yarn 任务的执行时间。
在我的特殊用例中,我想执行现有的 E2E-Test (yarn test:e2e) 100 次并取平均值。
你可以使用 npm 包 gnomon:
一个命令行实用程序,有点像 moreutils 的 ts,用于将时间戳信息添加到另一个命令的标准输出中。
这样安装:
$ npm i -g gnomon
有了这个你可以运行:
$ yarn install | 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}
如何在不修改脚本的情况下在命令行上测量 npm/yarn 任务的执行时间。
在我的特殊用例中,我想执行现有的 E2E-Test (yarn test:e2e) 100 次并取平均值。
你可以使用 npm 包 gnomon:
一个命令行实用程序,有点像 moreutils 的 ts,用于将时间戳信息添加到另一个命令的标准输出中。
这样安装:
$ npm i -g gnomon
有了这个你可以运行:
$ yarn install | 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}