前有 Deno 后有 Bun,近期又杀出个 LLRT,做为 JavaScript 服务端的运行时,Node.js 这些年 “不是被超越就是在被超越的路上”。
每出个新运行时环境基本都会同 Node.js 做个比较,瞧!我比你快哦!这次有 10 倍之差。
如下所示 LLRT VS Node.js 20
LLRT - DynamoDB Put, ARM, 128MB:
Node.js 20 - DynamoDB Put, ARM, 128MB:
图片
了解下 LLRT
LLRT(低延迟运行时)是亚马逊推出的一种轻量级 JavaScript 运行时。旨在满足对快速高效的无服务器应用程序不断增长的需求。
LLRT 运行时没有采用 V8 引擎,它使用 Rust 构建,利用 QuickJS 作为 JavaScript 引擎,确保高效的内存使用和快速启动。与 AWS Lambda 上运行的其他 JavaScript 运行时相比, LLRT 的启动速度提高了 10 倍以上,总体成本降低了 2 倍
根据官方仓库的定义来看,主要用于 Serverless 应用程序。如下所示:“解释了为什么在 Node.js、Bun 和 Deno 等现有选择之后,为什么再引入另一个 JavaScript 运行时?”
Node.js、Bun 和 Deno 代表了高效的 JavaScript 运行时。然而,它们设计时考虑的是通用应用程序。这些运行时并未专门为短生命周期的运行实例所需的无服务器环境而设计。它们每个都依赖于即时编译器(JIT)来在执行期间进行动态代码编译和优化。虽然即时编译提供了显著的长期性能优势,但它带来了计算和内存开销。
相比之下,LLRT 通过不包含 JIT 编译器而使自己与众不同,这是一个战略性的决定,带来了两个重大优势:
- A)JIT 编译是一个显著复杂的技术组件,增加了系统复杂性,并且对运行时的整体大小有很大贡献。
- B)没有 JIT 开销,LLRT 节省了 CPU 和内存资源,这些资源可以更有效地分配给代码执行任务,从而减少应用程序的启动时间。
其官方仓库也有声明 LLRT 不会是 Node.js 的替代品,仅支持一小部分的 Node.js API。
图片
参考 LLRT Github 仓库 https://github.com/awslabs/llrt