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