LoginSignup
13
13

More than 5 years have passed since last update.

goを1.5にアップデートして1.4とベンチを取る

Posted at

コンパイル

ダウンロードページからsrcを適当なディレクトリに落として解凍します。

[root@hogehoge ~]# cd /tmp                                                                                                                                                                                                          
[root@hogehoge tmp]# wget https://storage.googleapis.com/golang/go1.5.src.tar.gz                                                                                                                                                    
--2015-08-20 19:28:01--  https://storage.googleapis.com/golang/go1.5.src.tar.gz                                                                                                                                                             
Resolving storage.googleapis.com... 216.58.221.16, 2404:6800:4004:815::2010                                                                                                                                                                 
Connecting to storage.googleapis.com|216.58.221.16|:443... connected.                                                                                                                                                                       
HTTP request sent, awaiting response... 200 OK                                                                                                                                                                                              
Length: 12045689 (11M) [application/octet-stream]                                                                                                                                                                                           
Saving to: “go1.5.src.tar.gz”                                                                                                                                                                                                               

100%[=====================>] 12,045,689  10.2M/s   in 1.1s   

2015-08-20 19:28:02 (10.2 MB/s) - “go1.5.src.tar.gz” saved [12045689/12045689]   
[root@hogehoge tmp]# tar xzf go1.5.src.tar.gz                                                                                                                                                                                                                                                                                                                                                                                         

srcに入って./all.bash実行

[root@hogehoge tmp]# cd go/src/
[root@hogehoge src]# ./all.bash
##### Building Go bootstrap tool.
cmd/dist
ERROR: Cannot find /root/go1.4/bin/go.
Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.
./make.bash: line 121: /root/go1.4/bin/go: No such file or directory

/root/go1.4/bin/goにgo 1.4が無いと怒られたので、GOROOTから/root/go1.4へコピー

[root@hogehoge src]# cp -r /usr/local/go /root/go1.4

再度実行

[root@hogehoge src]# ./all.bash
##### Building Go bootstrap tool.
cmd/dist

##### Building Go toolchain using /root/go1.4.
bootstrap/internal/obj
bootstrap/internal/obj/arm
bootstrap/internal/obj/arm64
bootstrap/internal/obj/ppc64
--- 省略 ---
##### API check
Go version is "go1.5", ignoring -next /tmp/go/api/next.txt

ALL TESTS PASSED

---
Installed Go for linux/amd64 in /tmp/go
Installed commands in /tmp/go/bin
*** You need to add /tmp/go/bin to your PATH.

特に問題がなければ数分でビルドが終わります。

GOROOTを上書き

[root@hogehoge src]# mv /usr/local/go /usr/local/go1.4
[root@hogehoge src]# cp -r /tmp/go /usr/local/

バージョンを確認

[root@hogehoge src]# go version
go version go1.5 linux/amd64

1.5になってます。

ベンチマーク

go1.5gcロジックが見直された、メモリをさらに効率的に使うようになったなど、より速く省メモリになったと言われています。
ので、go1.4で作った稼働中のプログラムでベンチを取ってみます。

go1.4の時のbench
[root@hogehoge project]# go test src/main/main.go src/main/main_test.go -bench=Bench
PASS
BenchmarkMain           20000             67906 ns/op            7730 B/op         61 allocs/op
ok      command-line-arguments  1.563s
go1.5の時のbench
[root@hogehoge project]# go test src/main/main.go src/main/main_test.go -bench=Bench
PASS
BenchmarkMain           30000             58165 ns/op            7189 B/op         56 allocs/op
ok      command-line-arguments  2.571s

プログラムの中身については詳しくは書けませんが、1.4に比べて1.5は2割ほどメモリの使用量が減り、処理速度も向上するという結果になりました。
バージョンを上げるだけで2割も性能が上がるのは大変喜ばしいですね。

あとはメモリリークのチェック、負荷試験を経て問題なければ本番投入しても良いかと思います。

13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13