Rust凭借基准测试结果胜过C ++

本月初取得了小胜利。 根据比较编程语言性能流行基准测试的最新结果 ,Rust位居第二,介于C和C ++之间:

图片

为了比较性能,使用了10个不同程序的运行时间的几何平均值。 根据最近的结果, Rust在10个任务中有6个优于C ++

在削减下一些细节和对未来前景的看法。

如何正确解释结果?


Benchmarks Game是一个受欢迎的项目,其中基于解决指定任务的程序社区编写的性能度量来比较编程语言。 通常,对于每个任务,至少有几种使用相同语言进行了优化的实现。 为了总结结果,只选择一种显示最佳结果的语言。

可以预期,对于流行的编程语言,提出的最佳解决方案接近于语言本身的性能极限。 最近几个月,C,C ++和Rust表现出非常相似的结果。 因此,我们可以得出结论,平均而言,经过良好优化的Rust程序的性能不应低于经过良好优化的C或C ++程序。

但是基准毫无意义!


是的,没有。

当然,针对您的特定任务,不同实现的性能差异将取决于许多因素,并且肯定会因任务而异。

例如,Rust在其解决方案需要使用正则表达式的任务上显示出最差的比较结果。 从这些结果可以得出结论,在解决问题时,Rust(正则表达式板条箱)中正则表达式的实现要比PCRE2慢。 另一方面,Rust在需要激进的SIMD操作的任务上明显优于C ++。

应该得出的一般结论是:在Rust和C ++之间进行选择时,语言性能不再是优先考虑C ++的原因。 至少没有额外的测试。

当前情况会改变吗?


挺好的 C,C ++和Rust显示非常接近的结果。 现在,差异是如此微不足道,以至于测量误差会显着影响整体排名中第一名的分布。 下个月Rust和C ++可能会再次更改位置,或者C将首先让位给Rust或C ++。

我们应该期待Rust性能的进一步改善吗?


是的 Rust编译器是一个相对较年轻的项目,并且尚未完全实现大量可能的优化。 主要的障碍是LLVM,尽管LLVM是通用转换器,但它在形式上实际上已针对C / C ++进行了优化,并且不能很好地处理从其他编程语言获得的字节码(IR)。

Rust是比C和C ++更严格的编程语言。 这意味着对于典型的程序,Rust可以为翻译器(LLVM)提供更多的保证,而后者又可以使用它们来执行更积极的优化。

因此,可以预期,在未来几年中,Rust将能够显着提高其性能。 同时,C / C ++编译器已经发展了几十年,在此期间,它们已经达到了功能极限。 它们的进一步优化主要受到语言功能的限制,而不是编译器的实现。

仅在几年前,很少有人能想到使用一种新的编程语言甚至是一种功能性方法可以编写出比C / C ++实现性能更高的效率更高的代码。 我认为在接下来的几年中,Rust将通过示例证明相反的情况,开始在各种性能测试中占据自信的位置。 那你呢

Source: https://habr.com/ru/post/zh-CN480608/


All Articles