コンパイル
ダウンロードページから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.5
はgcロジックが見直された、メモリをさらに効率的に使うようになったなど、より速く省メモリになったと言われています。
ので、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割も性能が上がるのは大変喜ばしいですね。
あとはメモリリークのチェック、負荷試験を経て問題なければ本番投入しても良いかと思います。