gccgoの底力を見た

はじめに

Go言語自体、文法は結構気に入ってたんだが、標準コンパイラの速度が割と残念だなーというのがFirstImpressionだった。という訳でgccgoに期待していた訳だが、今回使ってみたので結果を載せてみる。

gccgoのインストール

これほど遅れた理由は、gccコンパイルしたくなかったからであるのだが、幸い、今やgccgoはUbuntuならPPA取得すればインストールできる。

http://d.hatena.ne.jp/bellbind/20110511/1305084862

あまり関係無い記事だが、最後にgccgoのインストール方法が書いてあるので、その通りにやればいい。

比較するコード

比較に用いる処理は2次元拡散方程式(特に工夫はしてない)で、対象は実質CなC++コード(元のコード自体はOpenMP対応だが、OpenMP外してある)とGoのコードである。ideoneに上げておく。

C++
https://ideone.com/hoTgM
Go
https://ideone.com/a2ZwJ

なお、実際の計測時には、両方ともoutput関数をコメントアウトして計測している。

実行環境

Hardware
CPU
Core i5 2500T
Mem
DDR3 4GBx2
Chipset
H67
Software
OS
Ubuntu 10.10
g++
4.4.4
gccgo
4.6

結果

C++
0.597(s)
Go
0.610(s)

という訳で、gccgoを使えばGoはC++と殆ど遜色ない速度が出るという結果になった。ライブラリが揃ってこれば、十分実用的な言語になるんじゃなかろーか。という訳で割と期待している。