更新:系统级编程语言性能大PK
| 2013-07-29 08:32
C/C++已经统治系统编程很久,除了ObjectiveC之外语言都无法获得很高的关注。
有人用多种系统级语言编写了同样的地图生成工具来测试他们的性能,包括D(DMD,LDC,GDC)、Go(GCC-Go,6g)、Haskell(GHC)和Rust。相比C/C++,这些语言都原生支持了诸如垃圾回收这些高级特性,也因此无一能达到C/C++的运行速度。
本文发的时候,作者优化不够,现在在几天的修改以后结果完全不一样了。
这其中表现最差的是原生Go语言编译器6g,只有Clang22%的速度,而表现最好的是基于LLVM的D语言编译器LDC,达到了79%。由于原生就使用了LLVM编译,Rust成为各语言原生编译器里最快的一个,但也只达到了45%。
从结果来看,D语言一定是首选。由于D语言许多特性都依赖垃圾回收,如果需要关闭垃圾回收而又要保持良好的使用体验,则推荐Rust。
其中表现最好的是基于LLVM的D语言编译器LDC,与同样基于LLVM的C编译器Clang相比,可以达到它96%的速度。其次是基于LLVM的Rust编译器,达到了89%。因为LLVM编译的优化做的太好,即使GCC都只能达到Clang 72%。另一个令人惊讶的结果是,基于JVM的Scala竟然能达到Clang75%的速度,甚至超过了GCC。
Compiler | Speed(s) | %Fastest |
Clang | 0.280 | 100% |
LDC | 0.292 | 96% |
Rustc | 0.316 | 89% |
Scala | 0.375 | 75% |
GCC | 0.390 | 72% |
LLVM-GHC | 0.428 | 65% |
6g | 0.544 | 51% |
GHC | 0.546 | 51% |
DMD | 0.640 | 37% |
GCCGO | 0.850 | 33% |
via http://www.solidot.org/story?sid=35724
via http://www.solidot.org/story?sid=35754