---
title: Vergelijking Ruby VMs
canonical: https://0110.be/posts/Vergelijking_Ruby_VMs
markdown_url: https://0110.be/posts/Vergelijking_Ruby_VMs.md
id: 252
published_at: '2008-08-08T00:00:00Z'
updated_at: '2013-12-05T18:19:15Z'
author: Joren
tags:
- name: 0110.be
  markdown_url: https://0110.be/tags/0110.be.md
- name: Code
  markdown_url: https://0110.be/tags/Code.md
- name: School
  markdown_url: https://0110.be/tags/School.md
---

# Vergelijking Ruby VMs

![Ruby Logo](https://0110.be/files/attachments/252/ruby_logo_new.gif "Ruby Logo")

Ik heb een [B-Tree](http://en.wikipedia.org/wiki/B-tree) en een [Red-Black tree](http://en.wikipedia.org/wiki/Red-black_tree) geschreven in Ruby. Om die datastructuren te testen heb ik een programma geschreven dat alle woorden uit een grote tekst inleest in een b-tree met het woord als sleutel en de frequentie als waarde en daarna een red black tree gebruikt als priority queue met als sleutel de frequentie en als waarde het woord. Op die manier kunnen de meest voorkomende woorden bepaald worden. De broncode is "hier neer te laden":\[trees.zip\].

Het programma is een ideale test voor Ruby VM's: het is redelijk intensief en gevarieerd. [IronRuby](http://www.ironruby.net/), [JRuby](http://jruby.codehaus.org/), [Ruby 1.8](http://www.ruby-lang.org/) en [Ruby 1.9](http://www.ruby-lang.org/en/news/2009/01/30/ruby-1-9-1-released/) werden getest op een Intel Core 2 Duo E6660 en dit zijn de resultaten:

  VM         Duur        Geheugen   VM details
  ---------- ----------- ---------- ----------------------------------------------------------------------------
  JRuby      28.79 sec   162MB      jruby 1.1.3 (ruby 1.8.6 patchlevel 114) (2008-07-20 rev 7243) \[x86-java\]
  IronRuby   88.15 sec   195MB      IronRuby 1.0.0.1 on .NET 2.0.50727.1433
  Ruby 1.8   104.1 sec   102MB      ruby 1.8.6 (2007-09-24 patchlevel 111) \[i386-mswin32\]
  Ruby 1.8   66.8 sec    96MB       ruby 1.8.6 (2007-09-24 patchlevel 111) \[universal-darwin9.0\]
  Ruby 1.9   33.42 sec   88MB       ruby 1.9.1p0 (2009-01-30 revision 21907) \[i386-darwin9.2.0\]

De verschillen zijn dus erg groot. Zowel in geheugengebruik als in duur. Ruby 1.8 is blijkbaar erg traag maar gebruikt relatief weinig geheugen. JRuby is in deze test drie keer sneller maar gebruikt meer geheugen. Ook IronRuby is sneller dan de standaard Ruby VM maar gebruikt net niet het dubbele aan geheugen. Hierbij moet wel verteld worden dat IronRuby een alfa build is, de resultaten kunnen dus nog veel veranderen.

Ruby 1.9 werd later getest op Mac OS X, met dezelfde pc. De nieuwe Ruby lijkt toch enkele beloften in te lossen. Ter vergelijking werd de voor Mac OS X geoptimaliseerde Ruby 1.8 VM die standaard met het besturingssysteem meegeleverd wordt ook nog getest.

