Zig 编写的“全家桶” JavaScript 运行时 Bun,性能完爆 Node.js 和 Deno

Bun 是采用 Zig 语言编写的高性能“全家桶” JavaScript 运行时,官方称其为"all-in-one JavaScript runtime"。

Zig 编写的“全家桶” JavaScript 运行时 Bun,性能完爆 Node.js 和 Deno

所谓"all in one",是因为 Bun 提供了打包、转译、安装和运行 JavaScript & TypeScript 项目的功能,内置原生打包器(native bundler)、转译器、task runner、npm 客户端,以及fetchWebSocket等 Web API。

Bun 的 HTTP 服务器基于 Request 和 Response 等 Web 标准:

  // http.js  export default {    port: 3000,    fetch(request) {      return new Response("Welcome to Bun!");    },  };

Bun 完全从零开始构建,对标的项目是 Node.js 和 Deno 这类现代化的 JavaScript 运行时。其官网展示的性能测试结果也是和 Node.js 以及 Deno 进行对比。

Zig 编写的“全家桶” JavaScript 运行时 Bun,性能完爆 Node.js 和 Deno

▲ 服务器端渲染(每秒的 HTTP 请求数)

Zig 编写的“全家桶” JavaScript 运行时 Bun,性能完爆 Node.js 和 Deno

▲ 加载大型数据表(每秒的平均请求数)

Zig 编写的“全家桶” JavaScript 运行时 Bun,性能完爆 Node.js 和 Deno

由上面的性能对比图可见,Bun 可谓是完爆 Node.js 和 Deno。不过作者并没有详细解释为什么 Bun 会这么快,仅表示自己花了大量的时间进行分析、基准测试和优化,以及采用 Zig 编写——与之对比的 Node.js 和 Deno 分别基于 C++ 以及 Rust。

Zig 是一门系统级编程语言,专为稳定性、可维护性和性能而设计,追求替代 C 语言在系统编程上的最佳地位。

Zig 编写的“全家桶” JavaScript 运行时 Bun,性能完爆 Node.js 和 Deno

此外,Node.js 和 Deno 使用的是 V8 JavaScript 引擎,Bun 使用的则是 JavaScriptCore 引擎,不同的引擎也会产生不同的性能。

作者表示他一年前就已经开始创建 Bun,近日才发布 Beta 测试版。由于存在内存泄露和崩溃等问题,不建议在生产环境部署使用。

展开阅读全文
发表评论

相关文章