通过源码解析 Node.js 中高效的 timer

Posted 前端程序人生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过源码解析 Node.js 中高效的 timer相关的知识,希望对你有一定的参考价值。

在 Node.js 中,许许多多的异步操作,都需要来一个兜底的超时,这时,就轮到 timer 登场了。由于需要使用它的地方是那么的多,而且都是基础的功能模块,所以,对于它性能的要求,自然是十分高的。总结来说,要求有:

  • 更快的添加操作。

  • 更快的移除操作。

  • 更快的超时触发。

接下来就让我们跟着 Node.js 项目中的 lib/timer.js 和 lib/internal/linklist.js 来探究它具体的实现。

更快的添加 / 移除操作

说到添加和移除都十分高效的数据结构,第一个映入脑帘的,自然就是链表啦。是的,Node.js 就是使用了双向链表,来将 timer 的插入和移除操作的时间复杂度都降至 O(1) 。双向链表的具体实现便在 lib/internal/linklist.js 中:


// lib/internal/linklist.js