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

コンパイル

ダウンロードページから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割も性能が上がるのは大変喜ばしいですね。

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


『 Go 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。