goでぐるぐるまわしてみた
forで10億回まわすだけみたいのをC言語と比較してみた。
実行は5回。(Ubuntu Linux 9.04 2.6.28-16-generic i686)
なんと平均でgoの方が2.6倍くらい速かった。
平均 | min | max | ||
---|---|---|---|---|
go | real | 1.711 | 1.097 | 2.228 |
user | 1.312 | 1.084 | 1.524 | |
sys | 0.002 | 0.000 | 0.012 | |
C | real | 4.442 | 3.776 | 4.703 |
user | 2.828 | 2.612 | 3.120 | |
sys | 0.001 | 0.000 | 0.004 |
(単位:秒)
まあ、C(gcc)は最適化したら一瞬で終わったのであれだが、
とりあえずgoはかなり速いらしい。
コンパイルは8g,8lで行った。
あとgoは実行ファイルがかなり大きめになった。
$ ls -l c/for3c gotest/for1go -rwxr-xr-x 1 **** **** 9112 Nov 18 00:52 c/for3c -rwxr-xr-x 1 **** **** 68432 Nov 18 00:44 gotest/for1go
でfileしてみたが既にstripされてるらしい。
$ file gotest/for1go gotest/for1go: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped