作者有一堆不断被会议拒绝的论文,这些论文因缺乏新颖性被评审专家认为无趣,多为观察性或依赖旧技术。最近有一篇关于在不同语言中构建状态机复制的论文即将发表,作者对比了垃圾回收语言(如 Java、Go)和手动内存管理语言(如 C++、Rust)。
- 最初以 MultiPaxos 算法设计 SMR 系统并转化为伪代码,选择 Java、C++、Go、Rust 四种语言测试,Java 和 C++为“传统”语言,Go 和 Rust 为“新语言”。
- 网络方面,原计划在四种语言中都使用 gRPC,但 Rust 的 Tonic 库表现不佳,被迫改用 TCP 实现。
在 3 服务器设置下进行实验,测量每种语言实现的最大“实际”吞吐量,在内存从 32GB 减少到 5GB 和 vCPU 从 8 减少到 2 的两种实验条件下,对比“传统”语言(Java 与 C++)和“新”语言(Go 与 Rust)的性能。
- “传统”语言中,Java 在内存减少时性能大幅下降,而 C++性能较稳定,且 Java 平均 CPU 利用率降低但方差增大,说明有垃圾回收成本。
- “新”语言性能与“传统”语言类似,且能更直接地观察到 GC 活动,随着可用内存减少,用于垃圾回收的 CPU 时间增加。
- 作者强调实验是在最大尾延迟约束下进行的,若不考虑延迟,所有系统都能达到更高的绝对最大吞吐量。
总的来说,通过在不同语言中的实验,展示了不同语言在构建状态机复制时的性能特点和差异。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。