根据 Go 开发团队和基本的算法测试,Go语言与C语言的性能差距大概在 10%~20% 之间。虽然没有官方的性能标准,但是与其它各个语言相比已经拥有非常出色的表现。
时下流行的语言大都是运行在虚拟机上,如:Java 和 Scala 使用的 JVM,C# 和 VB.NET 使用的 .NET CLR。尽管虚拟机的性能已经有了很大的提升,但任何使用 JIT 编译器和脚本语言解释器的编程语言(Ruby、Python、Perl 和 JavaScript)在 C 和 C++ 的绝对优势下甚至都无法在性能上望其项背。
这里以国外的一个编程语言性能测试网站 http://benchmarksgame.alioth.debian.org/ 为测试基准和数据源。这个网站可以对常见的编程语言进行性能比较,网站使用都是最新的语言版本和常见的一些算法。
通过对 C(gcc)、C++、Java、JavaScript 和Go语言的测试。性能比较如下表所示,表中数据的单位为秒,数值越小表明运行性能越好。
编程语言↓ / 测试用例→ | reverse-complement | pidigits | fannkuch-redux | fasta | spectral-norm | n-body | k-nucleotide | mandelbrot | binary-trees | regex-redux |
---|---|---|---|---|---|---|---|---|---|---|
C语言 | 0.42 | 1.73 | 8.97 | 1.33 | 1.99 | 9.96 | 5.38 | 1.65 | 2.38 | 1.45 |
C++ | 0.6 | 1.89 | 10.35 | 1.48 | 1.99 | 9.31 | 7.18 | 1.73 | 2.36 | 17.14 |
Go | 0.49 | 2.02 | 14.49 | 2.17 | 3.96 | 21.47 | 14.79 | 5.46 | 35.18 | 29.29 |
Java | 1.13 | 3.12 | 15.09 | 2.32 | 4.25 | 22.56 | 8.38 | 6.08 | 8.58 | 10.38 |
JavaScript | 4.3 | N/A | 81.49 | 9.79 | 16.17 | 28.74 | 66.07 | 19.04 | 53.64 | 4.44 |
通过上表可以看出,Go语言在性能上更接近于 Java 语言,虽然在某些测试用例上不如经过多年优化的 Java 语言,但毕竟 Java 语言已经经历了多年的积累和优化。Go语言在未来的版本中会通过不断的版本优化提高单核运行性能。