Benchmarks de Ruby 1.9

Recientemente ha salido Ruby on Rails versión 2 que todavía estoy estudiando para llevar a cabo un review. Pero ahora mismo voy a mostrar unos pequeños benchmarks de Ruby 1.9, versión recién salida del horno, y que por lo que parece los se va acercando a lenguajes más “enterprise”.

Pero vayamos al meollo de la cuestión, inicialmente había pensado en crearme alguna función que cargue el sistema de procesos pero como soy un Vago Bueno™, he deducido que el Makefile del intérprete de Ruby tenía que tener algún sistema de benchmark.

Descargaremos la nueva versión 1.9.0 y compilaremos como siempre ./configure && make && make test && make install. Así que lanzaremos lo siguiente:

make benchmark

Esta tarea detectará tu versión anterior y ejecutará un elevado número de pruebas comparando la versión recién compilada con la antigua, he aquí un ejemplo que se lleva a cabo.

vm1_rescue

i=0
while i<30000000 # while loop 1
  i+=1
  begin
  rescue
  end
end

ruby 1.8.6 (2007-09-24) [universal-darwin9.0]    11.3471548557281
ruby 1.9.0 (2007-12-25 revision 14709) [i686-darwin9.1.0]    1.78452610969543

La mejora es evidente, también es verdad que en algunos casos la mejora no es tan sustancial y en otras contadas ocasiones incluso empeora la anterior marca de tiempo. Si queréis ver el reporte completo de mis pruebas os dejo aquí el archivo Benchmarks de Ruby 1.9

Para aquel que esta más interesado en hacer benchmarks de sus scripts, es bueno utilizar la clase Benchmark, que da muchísimas facilidades para llevar a cabo pruebas de forma muy rápida.

Ahora solo falta que el amado/odiado ActionPack de Ruby on Rails soporte MultiThreading para que volemos. Aunque me está gustando el proyecto Merb, que a costa de perder alguna mágia este si que es multithread y ya no corre… vuela.

Por cierto que si estás interesado en benchmarks más generales y más fidedignos pasate por esta review.