Go语言的性能如何?

 
根据 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语言在未来的版本中会通过不断的版本优化提高单核运行性能。