node.js 代码执行时间的实现

基础实现

// 记录开始时间
var startTime = performance.now();

// 要执行的代码
for (let i = 0; i < 1000; i++) {
    console.log("第 " + (i+1) + " 次循环");
}

// 记录结束时间
var endTime = performance.now();
// 计算执行时间
var executionTime = endTime - startTime;
console.log('代码执行时间:', executionTime.toFixed(2), '毫秒');

 异步完成后计算结束时间

// 记录开始时间
var startTime = performance.now();

// 串行执行示例
function task1() {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      console.log('Task 1 completed');
      resolve();
    }, 600);
  });
}

function task2() {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      console.log('Task 2 completed');
      resolve();
    }, 800);
  });
}

task1()
  .then(task2)
  .then(function () {
    console.log('All tasks completed');
    // 记录结束时间
    var endTime = performance.now();
    // 计算执行时间
    var executionTime = endTime - startTime;
    console.log('代码执行时间:', executionTime.toFixed(2), '毫秒');
  });

利用exit事件,封装成函数

这样只要在代码开头写一个匿名函数并直接执行就可以了,因为是程序退出时才计算结束时间,所以即使是异步也能正确计算代码执行时间

(function () {
  // 记录开始时间
  var startTime = performance.now();
  process.on('exit', function (code) {
    console.log('about to exit with code: ' + code);
    // 记录结束时间
    var endTime = performance.now();
    // 计算执行时间
    var executionTime = endTime - startTime;
    console.log('代码执行时间:', executionTime.toFixed(2), '毫秒');
  });
})();

// 串行执行示例
function task1() {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      console.log('Task 1 completed');
      resolve();
    }, 600);
  });
}

function task2() {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      console.log('Task 2 completed');
      resolve();
    }, 800);
  });
}

task1()
  .then(task2)
  .then(function () {
    console.log('All tasks completed');
  });

 

posted @ 2024-04-03 17:29  C羽言  阅读(161)  评论(0)    收藏  举报