Node.js 又要被替代了?亞馬遜推出新的 JS 運(yùn)行時,速度快 10 倍
前有 Deno 后有 Bun,近期又殺出個 LLRT,做為 JavaScript 服務(wù)端的運(yùn)行時,Node.js 這些年 “不是被超越就是在被超越的路上”。
每出個新運(yùn)行時環(huán)境基本都會同 Node.js 做個比較,瞧!我比你快哦!這次有 10 倍之差。
如下所示 LLRT VS Node.js 20
LLRT - DynamoDB Put, ARM, 128MB:
Node.js 20 - DynamoDB Put, ARM, 128MB:
圖片
了解下 LLRT
LLRT(低延遲運(yùn)行時)是亞馬遜推出的一種輕量級 JavaScript 運(yùn)行時。旨在滿足對快速高效的無服務(wù)器應(yīng)用程序不斷增長的需求。
LLRT 運(yùn)行時沒有采用 V8 引擎,它使用 Rust 構(gòu)建,利用 QuickJS 作為 JavaScript 引擎,確保高效的內(nèi)存使用和快速啟動。與 AWS Lambda 上運(yùn)行的其他 JavaScript 運(yùn)行時相比, LLRT 的啟動速度提高了 10 倍以上,總體成本降低了 2 倍
根據(jù)官方倉庫的定義來看,主要用于 Serverless 應(yīng)用程序。如下所示:“解釋了為什么在 Node.js、Bun 和 Deno 等現(xiàn)有選擇之后,為什么再引入另一個 JavaScript 運(yùn)行時?”
Node.js、Bun 和 Deno 代表了高效的 JavaScript 運(yùn)行時。然而,它們設(shè)計時考慮的是通用應(yīng)用程序。這些運(yùn)行時并未專門為短生命周期的運(yùn)行實例所需的無服務(wù)器環(huán)境而設(shè)計。它們每個都依賴于即時編譯器(JIT)來在執(zhí)行期間進(jìn)行動態(tài)代碼編譯和優(yōu)化。雖然即時編譯提供了顯著的長期性能優(yōu)勢,但它帶來了計算和內(nèi)存開銷。
相比之下,LLRT 通過不包含 JIT 編譯器而使自己與眾不同,這是一個戰(zhàn)略性的決定,帶來了兩個重大優(yōu)勢:
- A)JIT 編譯是一個顯著復(fù)雜的技術(shù)組件,增加了系統(tǒng)復(fù)雜性,并且對運(yùn)行時的整體大小有很大貢獻(xiàn)。
- B)沒有 JIT 開銷,LLRT 節(jié)省了 CPU 和內(nèi)存資源,這些資源可以更有效地分配給代碼執(zhí)行任務(wù),從而減少應(yīng)用程序的啟動時間。
其官方倉庫也有聲明 LLRT 不會是 Node.js 的替代品,僅支持一小部分的 Node.js API。
圖片
參考 LLRT Github 倉庫 https://github.com/awslabs/llrt