在非 Rust 语言编写的服务器中逐步引入 Rust 以提升性能的不同策略。作者以 Node.js 服务器为例,通过基准测试比较了不同策略的性能,并提供了详细的代码示例和性能数据。
核心策略包括:
1. Tier 0: No Rust
不使用 Rust,作为性能比较的基线。
2. Tier 1: Rust CLI Tool
将性能瓶颈函数用 Rust 重写,并编译为 CLI 工具,由 Node.js 服务器调用。
3. Tier 2: Rust Wasm Module
将 Rust 函数编译为 Wasm 模块,并在 Node.js 中运行。
4. Tier 3: Rust Native Function
使用 Rust 编写函数,编译成本地代码,并在 Node.js 中加载执行。
5. Tier 4: Rust Rewrite
将整个服务器用 Rust 重写。
性能结果:
1. Tier 1 相较于基线提升了 76% 的吞吐量,响应大小减半。
2. Tier 2 吞吐量提升至基线的 2.03 倍,平均延迟降低至 0.50x。
3. Tier 3 吞吐量提升至基线的 3.75 倍,平均延迟降低至 0.26x。
4. Tier 4 吞吐量提升至基线的 4.93 倍,平均延迟降低至 0.21x,内存使用降至 0.01x。
Tier 3 策略提供了最佳的性能提升与开发成本比。
#Rust #性能
https://github.com/pretzelhammer/rust-blog/blob/master/posts/rust-in-non-rust-servers.md
核心策略包括:
1. Tier 0: No Rust
不使用 Rust,作为性能比较的基线。
2. Tier 1: Rust CLI Tool
将性能瓶颈函数用 Rust 重写,并编译为 CLI 工具,由 Node.js 服务器调用。
3. Tier 2: Rust Wasm Module
将 Rust 函数编译为 Wasm 模块,并在 Node.js 中运行。
4. Tier 3: Rust Native Function
使用 Rust 编写函数,编译成本地代码,并在 Node.js 中加载执行。
5. Tier 4: Rust Rewrite
将整个服务器用 Rust 重写。
性能结果:
1. Tier 1 相较于基线提升了 76% 的吞吐量,响应大小减半。
2. Tier 2 吞吐量提升至基线的 2.03 倍,平均延迟降低至 0.50x。
3. Tier 3 吞吐量提升至基线的 3.75 倍,平均延迟降低至 0.26x。
4. Tier 4 吞吐量提升至基线的 4.93 倍,平均延迟降低至 0.21x,内存使用降至 0.01x。
Tier 3 策略提供了最佳的性能提升与开发成本比。
#Rust #性能
https://github.com/pretzelhammer/rust-blog/blob/master/posts/rust-in-non-rust-servers.md