fizz buzzを使ってruby言語とgo言語の性能実験
開発でメインでRubyを使っていますが、Go言語の計算スピードが爆速と聞いてGo言語を勉強をしているのですが、実際にどのぐらい性能がいいのか試してみました。
性能の比較実験として有名なFIZZ BUZZを求めるプログラムを1億回ループしてみました。
標準出力をすると時間がかかるので適当に変数を入れてます。
実際のソースはこちらになります。
Rubyの場合
for i in 1..100000000 do if i % 3 == 0 && i % 5 == 0 a = 1 # puts "FizzBizz" elsif i % 3 == 0 b = 2 # puts "Fizz" elsif i % 5 == 0 c = 3 # puts "Buzz" else d = 4 # puts i end end
Go言語の場合
package main import ( "fmt" ) func main() { for i := 1; i <= 100000000; i++ { fizzbuzz(i) } } func fizzbuzz(i int) { if i % 3 == 0 && i % 5 == 0 { a := 1 // fmt.Println("FizzBizz") } else if i % 3 == 0 { b := 2 // fmt.Println("Fizz") } else if i % 5 == 0 { c := 3 // fmt.Println("Buzz") }else{ d := 4 fmt.Println(i) } }
rubyの場合
$ time ruby fizzbuzz.rb real 0m14.452s user 0m12.813s sys 0m0.445s
GOの場合
$ time go run fizzbuzz.go real 0m1.063s user 0m0.130s sys 0m0.210s
実際に計算スピードを図って見るとここまで違うんですね・・・でも1億ループを1秒ぐらいで返すとかめっちゃ魅力的な言語ですね♪