Краткое описание RubyInline

Posted on March 20, 2007
Руби конечно быстрый язык, но иногда необходимо производить вычисления ещё быстрее
Для этого существует пакет RubyInline он предназначен для включения в код на руби небольших отрезков на C. Для примера рассмотрим простейшую задачу - поиск факториала.

class Test
  def factorial(n)
    f = 1
    n.downto(2) { |x| f *= x }
    f
  end
end

t = Test.new
tstart = Time.now
t.factorial(200)
tend = Time.now
puts tend - tstart
Теперь рассмотрим код такого-же функционала но с RubyInline

require 'rubygems'
require 'inline'
class Test
   inline do |builder|
     builder.c "
     long factorial(int max) {
     int i=max, result=1;
     while (i >= 2) { result *= i--; }
      return result;
    }"
  end
end

t = Test.new
tstart = Time.now
t.factorial(200)
tend = Time.now
puts tend - tstart
И сравним время, у меня в тесте №1 время получилось равным: 0.001903
А в тесте номер №2 - 0.0000032
Так что результат на лицо ).

P.S. Под windows b системы без компилятора работать не будет.
P.P.S Под Windows используйте cygwin или просто переходите на другую OS