如何测量导入执行时间

How to measure import execution time

如何在不进入导入的情况下测量导入的执行时间?

假设我有下面的代码。


main.js

const now = Date.now();
import './module';
console.log(`${Date.now() - now}ms`);
// shows 0ms

module.js

const now = Date.now();
let a = 0;
for(let i = 0; i < 1000 * 1000 * 1000, i++) a++;
console.log(`${Date.now() - now}ms`;
// shows 1000ms

您的 main.js 不起作用,因为在加载和初始化(执行)所有导入的依赖项之前,不会执行模块的代码。这两个 Date.now() 调用将始终 运行 紧接着对方,导致输出 0 毫秒。

您需要在测量的 module.js 之前加载另一个模块以获取开始时间:

// main.js
import { now as start } from 'beginMeasure';
import './module';
const end = Date.now();
console.log(`${end - start}ms`);
// beginMeasure.js
export const now = Date.now();

我发现测量导入模块执行时间的最佳方法是改用 require。确定慢模块并恢复导入是很好的。

const now = Date.now();
const module1 = require('./module1');
console.log(`module1: ${Date.now() - now}ms`);
const module2 = require('./module2');
console.log(`module2: ${Date.now() - now}ms`);