使用 Bun 提升代码运行效率
目前 JavaScript 的新运行时 Bun 已经到了 1.0.1 版本了,但是目前暂不支持 Nest 框架,同时该库的 issue 中还有不少的 bug。所以生产环境暂时不考虑使用。
同时由于工作需要,平时个人会写一些小脚本来处理和分析数据。于是个人就直接尝试使用 Bun 执行之前所写的 mjs 代码。当前脚本使用了 axios 获取数据,同时利用了 node:fs/promises 来处理文件。在没有任何改动的情况下,Bun 可以直接运行对应的脚本。
由于当前需要获取的数据有上万条数据,需要的时间很长,为了快速处理直接改为了获取 100 条数据。同时利用 console.time 来获取对应代码的执行时间。
对比结果如下所示:
- Node.js 18.179 s
- Bun 14.06 s
目前看来两个运行时 console.time 的小数点位数是不相同的。
简单起见,当前的脚本的数据请求是一个完成后才会执行下一个,目的是当前可以随时中断。
对比 100 条数据请求两者居然会有 4s 的差距!同时按照目前的对比信息来说,如果是 1 万条数据就会有近 400 s 的时间差距,提升的非常非常大。
上述是 IO 密集型功能,那 CPU 密集型功能呢?这里拿出斐波那契数列的递归算法。
对比如下所示:
-
n 为 45
- Node.js 7.906 s
- Bun 3.22 s
-
n 为 46
- Node.js 12.764s
- Bun 5.21 s
-
n 为 47
- Node.js 20.641 s
- Bun 8.43s s
Bun 表现也非常好,在结果一致的情况下,Bun 运行时间比 Node.js 少了一半还多。
期待 Bun 早日支持 Nest。