Deno 1.26改进文本编码和文件处理性能,并强化对Node.js的支持

JavaScript、TypeScript执行环境Deno发布最新版本1.26,这个版本的更新重点除了性能提升外,同时也改进Node.js与NPM的兼容性。官方预告,他们内部一直进行的性能改进工作,通过解决瓶颈减少延迟和处理开销,近期将会公开完整成果。

但和1.24.3版本相比,Deno 1.26在性能改进部分,已经有一些初步的进展,像是将文本编码到现有的TypedArray中,小型负载的最大吞吐量提升至5倍,较大的有效负载则提高到30倍,而且同步写入Deno.writeFileSync速度也提高达1.44倍,异步写入Deno.writeFile的速度也有小幅度提升1.15倍。

之前因为官方改变Deno文本解编码的方法,导致CSV解析性能下降,但现在官方着手进行改进,在基准测试中,这个版本在Mac上有1.36倍的性能提升,Linux也有加速1.19倍。另外,现在没有查询字符串的URL解析速度提高至2.27倍,对于具有多个查询字符串参数的复杂URL,解析速度也提高了1.37倍。

开发团队对Deno的文件系统操作进行诸多改进,与1.24.3版本相比,许多文件操作性能都有不同幅度的提升(下图),在MacOS上,Deno.copyFileSync会尽可能使用APFS写入时复制这个系统调用,以取得优化策略。

图片来源/Deno Land

Deno 1.26在Node.js兼容层中,添加了几个之前不被支持的API实例,此外,整个兼容层的测试组件已经更新,以前测试组件仅支持Node.js 16.13.0,现在已经能够兼容Node.js 18.8.0,官方解释,这项工作是为了Node.js 18会在10月进入长期支持做准备。

Deno中的Node.js流媒体实例,已经更新使用readable-stream@4.1.0 NPM模块,这项更新将让Deno能够更好地跟上重大更新。Deno在这个版本添加对缓存API的支持,该API让开发者可以缓存请求/回应对象,开发团队提到,这个功能在动态生成回应时很有帮助,可以让开发者缓存GET请求的回应,并从缓存中对类似请求提供回应。Deno 1.26也附带了最新的TypeScript稳定版4.8。