mod_rubinius
Posted by Piotr Sarnacki Thu, 31 Jan 2008 09:09:00 GMT
Jakiś czas temu pisałem ,że mogą szykować się zmiany w deploymencie railsów. Dzisiaj przeczytałem, że Ezra Zygmuntowicz zatrudnił szóstego programistę, którego zadaniem będzie praca nad mod_rubinius dla serwerów Nginx i Apache. Więcej w podcaście z udziałem Ezry
Mały cytat:More interesting things from the podcast:
- In like one night Evan Phoenix implemented a multiple Rubinius VM running in single OS process in native threads and passing each other messages like it happens in Erlang). This can lead to a great solution to shared hostings and Ruby deployment problem David Hansson wrote about recently.
- Rubinius may support native code compilation along side with bytecode that Rubinius VM can run. Sounds interesting. Ryan Davis is working on Rubinius at Engine Yard and his Ruby2C experiments may be useful.


Także śledzę poczynania Rubiniusa i jego twórców i wszystko idzie w dobrym kierunku. Jednak póki co Rubinius nie nadaje się do produkcyjnego użycia. Zarówno jeśli chodzi o stabilność, a także o wydajność. W microbenchmarkach Rubinius jest szybszy od MRI 1.8.6, jednak w większych aplikacjach (jak już uda się je odpalić) nie jest tak różowo. Przykładowo operacje na stringach są w tej chwili około 55x wolniejsze. Prosty benchmark:
========== require "benchmark" include Benchmark module Kernel # rubinius is missing this method... (needed by benchmark module) class << self alias :format :sprintf end end a = (1..100_000).to_a.map! {|e| rand(10000) } bm(10) do |make| make.report do a.sort! end end =========== $ ruby1.8 test.rb user system total real 0.130000 0.000000 0.130000 ( 0.141255) $ ruby1.9 test.rb user system total real 0.080000 0.000000 0.080000 ( 0.090821) $ rubinius test.rb user system total real 11.579243 0.000000 11.579243 ( 11.579231) $ jruby -J-server -J-Djruby.compile.mode=FORCE test.rb user system total real 1.101000 0.000000 1.101000 ( 1.014000) ===========(dla jruby to za mały test żeby mógł się rozgrzać)
Oczywiście nie oznacza to, że rubinius będzie wolny. Po prostu póki co skupiają się żeby powstała wersja 1.0, która będzie działać. W kwestii wydajności nie robili prawie nic.
Dlatego uzbrajamy się w cierpliwość i czekamy na kolejne wieści z EY ;).
ps. benchmark oczywiście nie dotyczy zdania “Przykładowo operacje na stringach są w tej chwili około 55x wolniejsze.”, ale ogólnie pokazuje że jest co optymalizować.