2011 年谷歌为 Scala Days 2011 发布报告,比较 C++、Java、Go 和 Scala 中算法的习惯实现。十年后,情况发生显著变化。2011 年栈溢出调查显示 Java 居首,Scala 仅占 0.5%,Go 仅一票。2024 年栈溢出调查中,Java 降至第七,C++第九,Go 第十三,Rust 第十四,Scala 第二十六。Rust 是新竞争者,强调性能、类型安全和并发,有静态编译、无垃圾回收等特性。
实验以循环识别算法为基准,原论文描述简略。Rust 习惯实现从安全 Rust 开始,因算法需大量指针需避免不安全代码,不安全 Rust 实现更接近伪代码。数据结构在安全和不安全 Rust 中有不同定义,枚举使用普通enum
,迭代方式类似 Python 的for in
,类型推断要求显式类型声明,符号绑定有多种控制方式,成员函数避免访问器函数等。
在安全 Rust 实现中,需解决引用生命周期问题,最终利用Name
作为句柄。性能分析使用 Raspberry Pi 4 进行测试,比较 C++和 Rust 的代码大小、编译时间、二进制大小、内存占用和运行时间等。Rust 调试版本比 C++调试版本慢,发布版本在执行时间和内存占用上优于 C++,不安全 Rust 版本性能更好。原 C++代码忘记计算打印所需的嵌套级别。C++和 Rust 代码可在 GitHub 上找到。感谢 RPLCS 和 Serenity Discord 服务器成员,也感谢 Robert Hundt 提供的原始论文。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。