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秒ぐらいで返すとかめっちゃ魅力的な言語ですね♪