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