nodejs 有哪些常用的计时特性 ?
2025-09-25 11:12
nodejs
266
0
0
0
标题录入
封面图
在 Node.js 中,有多种常用的计时(Timing)特性或方法,用于测量代码执行时间、延迟操作、定时任务等。以下是 Node.js 中一些常用的计时相关功能和 API: --- ## 一、基础计时方法 ### 1. `console.time()` 和 `console.timeEnd()` 用于记录一段代码的执行时间。 ```javascript console.time('myTimer'); // 执行一些操作 console.timeEnd('myTimer'); // 输出: myTimer: Xms ``` > **注意**:`console.time()` 和 `console.timeEnd()` 是浏览器开发者工具中常见的调试工具,在 Node.js 中也支持。 --- ### 2. `process.hrtime()` 用于获取高精度的时间戳(毫秒级),适合性能分析。 ```javascript const start = process.hrtime(); // 执行一些操作 const end = process.hrtime(start); console.log(`耗时: ${end[0]} 秒, ${end[1] / 1e6} 毫秒`); ``` > `process.hrtime()` 返回的是 `[seconds, nanoseconds]` 的数组。 --- ## 二、定时器功能 ### 1. `setTimeout(callback, delay)` 设置一个延迟后执行的函数。 ```javascript setTimeout(() => { console.log('3秒后执行'); }, 3000); ``` ### 2. `setInterval(callback, interval)` 每隔一段时间重复执行一个函数。 ```javascript setInterval(() => { console.log('每2秒执行一次'); }, 2000); ``` ### 3. `clearTimeout()` 和 `clearInterval()` 用于取消定时器。 ```javascript const timer = setTimeout(() => { console.log('不会执行'); }, 1000); clearTimeout(timer); ``` --- ## 三、异步/等待计时(Promise) 可以结合 `Promise` 实现延迟执行: ```javascript function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function run() { console.log('开始'); await delay(2000); console.log('2秒后执行'); } run(); ``` --- ## 四、性能分析工具(如使用 `perf_hooks` 模块) Node.js 提供了 `perf_hooks` 模块,用于更精确的性能分析。 ```javascript const { performance } = require('perf_hooks'); performance.mark('start'); // 执行一些操作 performance.mark('end'); performance.measure('myMeasure', 'start', 'end'); console.log(performance.getEntriesByName('myMeasure')[0]); ``` --- ## 五、使用 `Date` 对象计时 虽然不如 `hrtime` 精确,但简单易用: ```javascript const start = new Date(); // 执行一些操作 const end = new Date(); console.log(`耗时: ${end - start} 毫秒`); ``` --- ## 六、第三方库(如 `benchmark` 或 `lodash`) - **`benchmark`**:用于性能测试。 - **`lodash`**:提供 `_.delay()` 等实用函数。 ```bash npm install benchmark ``` ```javascript const Benchmark = require('benchmark'); const suite = new Benchmark.Suite; suite.add('test', () => { // 要测试的代码 }) .on('complete', function() { console.log(this.name + ' ' + this.hz.toFixed(2) + ' ops/sec'); }) .run(); ``` --- ## 总结:常用计时方法对比 | 方法 | 是否高精度 | 是否支持异步 | 用途 | |------|-------------|----------------|------| | `console.time()` | 否 | 否 | 调试用,简单计时 | | `process.hrtime()` | 是 | 否 | 高精度计时 | | `setTimeout` / `setInterval` | 否 | 是 | 定时执行任务 | | `performance` API | 是 | 否 | 高精度性能分析 | | `Date` | 否 | 否 | 简单计时 | | `Promise` + `setTimeout` | 否 | 是 | 异步延迟操作 | | `benchmark` 库 | 是 | 否 | 性能基准测试 | --- 如果你有具体的使用场景(比如性能分析、异步任务、调试等),我可以给出更针对性的建议。
上一篇:
electron打包成exe后debug 控制台 调试的方法
下一篇:
nodejs如何克服I/O操作阻塞的问题 ?
标题录入,一次不能超过6条
脑袋里突然灵光一现,如果不写下来,过后就想不起来了
T:0.012135s,M:119.03 KB
返回顶部
留言
留言
评论