首页 > 编程语言 >node.js 代码执行时间的实现

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

时间:2024-04-03 17:35:42浏览次数:22  
标签:node function resolve console log js 代码执行 var

基础实现

// 记录开始时间
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');
  });

 

标签:node,function,resolve,console,log,js,代码执行,var
From: https://www.cnblogs.com/yuyanc/p/18113184

相关文章

  • vue项目打包发现index.js加载了两次?差别在于请求头purpose:prefetch
    上线后打开f12,开启禁用缓存=>发现index.js加载了两次;6.6M直接双倍流量;一番研究得知:vue-cli打包时,会将一些文件preload和prefetch;(1)preload(预先加载文件)app.jsvendor.js(2)prefetch(闲时加载)index.js/router懒加载独立打包的文件【就是那串注释标明打包在xx模块用的】再者:启......
  • json字符串重复转义问题
    若后台返回的是一个json字符串格式的值,我们首先做的是先用JSON.parse()转化成json数组,然后再通过点的方式取到里面的值但是在实际使用过程中,会发现有重复转义的问题,第一次操作正常,第二次点击其他按钮后,json字符串前就多了一个\,所以在进行parse之前,要先用replace()去除\ 一、使......
  • Python框架下的qt设计之JSON格式化转换小程序
    JSON转换小程序代码展示:主程序代码:fromPyQt6.QtWidgetsimport(QApplication,QDialog,QMessageBox)importsysimportjsonclassMyJsonFormatter(jsonui.Ui_jsonFormatter,QDialog):#jsonui是我qt界面py文件名def__init__(self):supe......
  • 【C/C++】VsCode调试配置tasks.json和launch.json
    前段时间配大作业环境改了很多配置,发现tasks.json和launch.json经常令自己很迷惑。网上找的配置有时会有各种各样的问题,在此记录一下上学期配好的配置文件,日后有时间再详细研究研究tasks.json:{"version":"2.0.0","tasks":[{"type":"shell",......
  • 如何判断JS类型,快速上手前端开发
    注意1.nulltypeofnull//“object”因为历史遗留的原因。typeofnull尝试返回为null失败了,所以要记住,typeofnull返回的是object。2.NaN特殊值NaN返回的是“number”typeofNaN//“number”3复杂数据类型而复杂数据类型里,除了函数返回了"function"其他均返回......
  • js 模块化
    一、什么是模块化?1.1定义将一个复杂的程序依据一定的规则(规范)封装成几个块(文件),并进行组合在一起块的内部数据/实现是私有的,只是向外部暴露一些接口(方法)与外部其它模块通信 1.2模块化的进化过程 1.2.1全局function模式*全局函数模式:将不同的功能封装......
  • 在静态页中,js和css使用虚拟路径指向网站根目录
    第一步:修改web.config<configuration><system.webServer><handlers><addname="x"verb="GET"path="*.css.ashx"type="FileResolver"/><addname="xx"verb=&quo......
  • NestedSet NodeTrait.php
    1<?php23namespaceKalnoy\Nestedset;45useException;6useIlluminate\Database\Eloquent\CollectionasEloquentCollection;7useIlluminate\Database\Eloquent\Model;8useIlluminate\Database\Eloquent\Relations\......
  • 基于Node.js和ws库搭建WebSocket服务并实现消息互通的简单示例
    环境要求:Node.js环境安装npm(Node.js的包管理器)步骤:安装Node.js:如果你还没有安装Node.js,请从Node.js官网下载并安装。创建项目:创建一个新的目录作为项目文件夹,并在该目录下初始化一个新的Node.js项目。        mkdirmy-websocket-server        cdmy......
  • js 可以间接地“声明”或初始化变量的其他方式(除了直接使用var、let和const)
    在JavaScript中,除了直接使用var、let和const关键字来声明变量外,还有一些其他方式可以间接地“声明”或初始化变量。以下是一些示例:函数参数:当定义一个函数时,函数的参数列表中的每个参数实际上都会成为该函数作用域内的变量。这些变量在函数被调用时会被自动声明和初始化。func......