< 返回版块

2019-03-21 00:15    责任编辑:Mike

Rust 的高性能是其设计之初就定下的目标。当初 Mozilla 的程序员们已经被 Firefox 的 Gecko 引擎搞得吐血,历史包袱太重,有非常多的隐藏 bug,还很不好找。为此,他们发明了各种各样的工具来找 bug。然而最终的大杀器还是 Rust。只有 Rust 的出现,才能从根本上解决 Firefox 的历史包袱问题。

Gecko 是用 c++ 写的(上千万行 c++ 代码)。Rust 要能在 Gecko 中逐渐起作用,其性能至少不能比 C++ 低。首先就定了这个基调。

怎么做到呢?

  • 零开销抽象
  • 无垃圾搜集器
  • 静态类型编译型语言
  • 清晰的不可变绑定和所有权系统

零开销抽象决定了在一次直接的对象或函数调用中,不会产生多次地址分派,这样就能与 C 保持同一个性能数量级。

无垃圾搜集器(GC)决定了不会有世界暂停的卡顿现象出现。当然,没有了垃圾搜集器,也保证了程序员能精确控制内存,但同时也带来了一定程度上的内存管理的复杂性。

静态类型编译型语言,这是要达到最高阶性能,必须的。因为编译的时候要求知道所用对象内存的大小,便于编译器进行优化。一部分计算,也可以在编译期完成。

清晰的不可变绑定和所有权系统,允许编译器后端做更精确的优化。

从可能性来说,Rust 写出的代码,比 C 快,是完全有可能的。在越大的项目中,这种可能性越大。


性能大 PK


另一个性能评测:

PK

Time score:
c: 1.0
rust: 1.0378
cpp: 1.0647
cs: 1.8972
java: 2.6781
go: 4.2734

结论是:整体上,Rust 比 C 慢 4%,比 C++ 快 3%。