Ruby는 얼마나 좋아졌을까
Ruby는 2.0 preview1 버전이 발표되었습니다. 근래 Scala를 공부했는데 특징중에 Java에 비해 크게 속도가 떨어지지 않고 객체지향과 함수형 언어를 지향한다는 것을 보고 각종 ruby와 scala를 한번 비교해 보았습니다. 여러가지 검사를 시행해야 정확하겠지만 단순히 모 사이트에 나와 있는 문제를 푸는 프로그램을 작성해 보았습니다. Fibonacci 수열중에 4000000보다 작은 값들 중 짝수값들의 합을 구하는 것입니다. 먼저 Ruby 소스. INFINITY = 1.0/0 MAX = 4000000 def fib(n) case n when 1..2 then n else fib(n-1) + fib(n-2) end end # ruby 1.9.3, jruby 1.7.0, macruby 0.12 n = 1 sum = 0 while (c = fib(n)) 다음은 scala 소스 입니다. 그리 잘 만들었다고 생각되지는 않지만 방식은 대충 같습니다. object App { def fibSumUnder(m:Int) = { def fib(n:Int):Int = if (n = m) sum else if (fibResult % 2 == 0) fibSumUnder0(n+1, sum+fibResult) else fibSumUnder0(n+1, sum) } fibSumUnder0(1, 0) } def main(args:Array[String]) = { print(fibSumUnder(4000000)) } } App.main(args) Ruby는 rvm을 사용해서 ruby 1.9.3p125, ruby 2.0.0dev, jruby 1.7.0, macruby 0.12을 설치해서 사용했고, scala는 2.9.2입니다. 프로그램 실행시간은 다음과 같은 방식으로 2번 측정해서 빠른 값을 얻었습니다. $ time ruby fib_test.rb $ time scala fib_test.scala 결과는 다음과 같습니다....