<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Our Geek Space &#187; ruby</title>
	<atom:link href="http://blog.moove-it.com/category/ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.moove-it.com</link>
	<description>be free to express yourself...</description>
	<lastBuildDate>Thu, 26 Jan 2012 19:30:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Interesting Ruby&#8217;s websites for beginners &#8211; cool initiatives</title>
		<link>http://blog.moove-it.com/ruby-websites-for-beginners-cool-initiatives/</link>
		<comments>http://blog.moove-it.com/ruby-websites-for-beginners-cool-initiatives/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 19:29:47 +0000</pubDate>
		<dc:creator>Mariana De Carli</dc:creator>
				<category><![CDATA[learn]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=967</guid>
		<description><![CDATA[The coolest thing about Ruby is that even though it’s a dynamic and reflective programming language it’s very easy to learn. More and more programmers around the world are interested in learning this new tool for making cool things. We’ve selected 3 interesting websites to help people (kids or adults) to know a little bit more [...]]]></description>
			<content:encoded><![CDATA[<p>The coolest thing about Ruby is that even though it’s a dynamic and reflective programming language it’s very easy to learn. More and more programmers around the world are interested in learning this new tool for making cool things. We’ve selected 3 interesting websites to help people (kids or adults) to know a little bit more of Ruby’s world.</p>
<h1>Kids Ruby (to kids)</h1>
<p><a title="kids ruby" href="http://kidsruby.com/" target="_blank"><img class="alignleft size-large wp-image-968" title="captura_kidsruby" src="http://blog.moove-it.com/wp-content/uploads/2012/01/captura_kidsruby-1024x277.jpg" alt="" width="717" height="194" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong><a href="http://kidsruby.com/">http://kidsruby.com</a></strong>: Kids Ruby is especially focused on kids, with a very easy interface which allows you to see the code, run it, and at the same time see what it outputs. Kids Ruby is also attractive for his Turtle graphics that allows you to draw pictures and have fun by mixing and trying colors. Kids Ruby includes a lot of useful resources and you don’t even need an internet connection to work. Developers also created a complete KidsRuby operating system based on Ubuntu Linux that makes program in Ruby a lot easier for kids.</p>
<h1>Rails for zombies</h1>
<p><a title="rails for zombies" href="http://railsforzombies.org/" target="_blank"><img class="alignleft size-full wp-image-969" title="railsforzombies" src="http://blog.moove-it.com/wp-content/uploads/2012/01/railsforzombies.jpeg" alt="" width="803" height="420" /></a></p>
<p>&nbsp;</p>
<p><strong><a href="http://railsforzombies.org/">http://railsforzombies.org/</a>: </strong>Rails for Zombies offers an open-source web framework with all the power of the Ruby language and with no additional configuration needed. In this site you can see tutorial videos which allow you to learn more about Ruby on Rails in just five levels. After seeing each video you’ll be challenged with cool exercises to practice your new skills. So if you’re a zombie and you’re hungry for Ruby’s knowledge this is the perfect site for you.</p>
<h1>Try Ruby</h1>
<p><a href="http://tryruby.org/" target="_blank"><img class="alignleft size-full wp-image-970" title="tryruby" src="http://blog.moove-it.com/wp-content/uploads/2012/01/tryruby.jpeg" alt="" width="922" height="474" /></a></p>
<p><strong><a href="http://tryruby.org/levels/1/challenges/0">http://tryruby.org/</a>: </strong>This website brings a very interactive Ruby tutorial; you can test new functions step by step and understand a little bit more about this language. In just 15 minutes and with a very interactive interface you can understand what Ruby is about. This site also allows you to save your progress by sign up for free at <strong>Code School</strong>.</p>
<p>Now that you have these very easy options to learn Ruby why don’t you try it out and maybe we’ll see you soon as a new member of Moove-IT’s team <img src='http://blog.moove-it.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/ruby-websites-for-beginners-cool-initiatives/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It&#8217;s about timing baby!</title>
		<link>http://blog.moove-it.com/its-about-timing-baby/</link>
		<comments>http://blog.moove-it.com/its-about-timing-baby/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 13:44:45 +0000</pubDate>
		<dc:creator>Andreas Fast</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=943</guid>
		<description><![CDATA[Yeah, it&#8217;s about timing. There was a problem in one of our projects at moove-it related to slow processing. There is a daemon spawning new threads to process certain new entries to the database. The entries come from a different system, that&#8217;s the reason for this program which processes each new entry. Sometimes at certain [...]]]></description>
			<content:encoded><![CDATA[<p>Yeah, it&#8217;s about timing.</p>
<p><a href="http://blog.moove-it.com/wp-content/uploads/2011/11/27169w0tgpcaxy.jpg" rel="lightbox[943]" title="Timing"><img class="size-medium wp-image-944 alignright" title="Timing" src="http://blog.moove-it.com/wp-content/uploads/2011/11/27169w0tgpcaxy-300x300.jpg" alt="" width="300" height="300" /></a></p>
<p>There was a problem in one of our projects at <a title="moove-it" href="http://moove-it.com" target="_blank">moove-it</a> related to slow processing. There is a daemon spawning new threads to process certain new entries to the database. The entries come from a different system, that&#8217;s the reason for this program which processes each new entry. Sometimes at certain hours of a day there are peaks in the entries to the database and the process will fall behind by about 20.000 entries or more. So we started analyzing the code to understand what was happening and why it took so long. We noted that each new thread the daemon spawned took about 5 seconds to complete its task. As we narrowed the measurement we came up with some code that took 5 seconds to execute but it only involved access to the database. So thanks to Aaron Patterson&#8217;s (<a title="@tenderlove" href="http://twitter.com/tenderlove" target="_blank">@tenderlove</a>) talk at RubyConf Uruguay about &#8220;Who makes the best asado&#8221; where he talked about rails and how it manages threads and database connections, we knew where to look.</p>
<p>What he explained is that each new thread requests its own database connection from the connection pool, and if there isn&#8217;t a free connection, rails waits for about 5 seconds and if after that there is no free connection it iterates over all the threads to take back the connections of dead threads(<a title="more info" href="http://tenderlovemaking.com/2011/10/20/connection-management-in-activerecord/" target="_blank">more info</a>). See the correlation with the 5 seconds I talked about in the previous paragraph? We immediately suspected that this was the problem. So we started searching the Rails API for a way to release the connection at the end of each thread&#8217;s execution. Surprisingly, we didn&#8217;t find an easy and understandable explanation anywhere at first googling <img src='http://blog.moove-it.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , so we digged deeper and came up with the following line:</p>
<blockquote><p>ActiveRecord::Base.connection_handler.clear_active_connections!</p></blockquote>
<p>The ActiveRecord::Base.connection_handler method returns the connection handler for the current thread and the clear_active_connections method does what it looks like, or from the Rails doc: &#8220;Returns any connections in use by the current thread back to the pool, and also returns connections to the pool cached by threads that are no longer alive.&#8221;</p>
<p>So this line returns the connections in use by a thread to the pool and enables the new threads spawned by the daemon to use the freed connections. This way we avoid the 5 second wait for rails to free the connections for us.</p>
<p>This one line picked up our performance from processing 1.000 entries in almost 2 hours to processing 10.000 in 5 minutes. Nice huh?!</p>
<p>That&#8217;s it. I&#8217;m not sure if this is the best way of doing it since this method also &#8220;&#8230; returns connections to the pool cached by threads that are no longer alive.&#8221; I guess this means it does the iteration over all the threads Aaron mentioned, but as you can see I&#8217;m happy with the performance improvement. We are using Rails 3.0.5, Aaron said that he will change the behavior, read more about it <a title="here" href="http://tenderlovemaking.com/2011/10/20/connection-management-in-activerecord/" target="_blank">here</a>.</p>
<p>Special thanks to <a title="@cheloeloelo" href="http://twitter.com/cheloeloelo" target="_blank">@cheloeloelo</a> who helped detecting the problems and digging through the Rails API finding the proper method to free the connections.</p>
<p><a href="http://www.freedigitalphotos.net/images/view_photog.php?photogid=151">Image: Suat Eman / FreeDigitalPhotos.net</a></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/its-about-timing-baby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Second RubyConf in Uruguay &#8211; 11th and 12th November</title>
		<link>http://blog.moove-it.com/second-rubyconf-in-uruguay-11th-12th-november/</link>
		<comments>http://blog.moove-it.com/second-rubyconf-in-uruguay-11th-12th-november/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 01:19:45 +0000</pubDate>
		<dc:creator>Gabriela Isnardi</dc:creator>
				<category><![CDATA[moove-it]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[talks]]></category>
		<category><![CDATA[workshops]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rubyconf]]></category>
		<category><![CDATA[uruguay]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=900</guid>
		<description><![CDATA[We are sponsoring one of the greatest technology events here in Uruguay. The Second RubyConf taking place within less than two weeks, the 11th and 12th November 2011, where many IT experts from all over the world get together in order to be immersed in this dynamic world and and up to date get with [...]]]></description>
			<content:encoded><![CDATA[<p>We are sponsoring one of the greatest technology events here in Uruguay. The Second RubyConf taking place within less than two weeks, the 11th and 12th November 2011, where many IT experts from all over the world get together in order to be immersed in this dynamic world and and up to date get with the latest trends of Ruby and Agile methodologies.</p>
<p><a title="RubyConf Uruguay" href="http://rubyconfuruguay.org/" target="_blank">RubyConf Uruguay 2011</a></p>
<p>We are hungry for knowledge and refreshment, and we all want to be on the same train.</p>
<p>Please welcome all the new members to this awesome community. And help spreading the news, but even more important, do not miss the opportunity to meet the experts, discuss the future of RoR, and be Rail!</p>
<p><a href="http://blog.moove-it.com/wp-content/uploads/2011/11/newspaper-advertising-final-01-1024x710.jpg" rel="lightbox[900]" title="newspaper-advertising-final-01"><img class="alignleft size-large wp-image-901" title="newspaper-advertising-final-01" src="http://blog.moove-it.com/wp-content/uploads/2011/11/newspaper-advertising-final-01-1024x710.jpg" alt="" width="717" height="497" /></a></p>
<p>&nbsp;</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/second-rubyconf-in-uruguay-11th-12th-november/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby + Rails + Agile &#8211; sharing presentations</title>
		<link>http://blog.moove-it.com/ruby-rails-agile-sharing-presentations/</link>
		<comments>http://blog.moove-it.com/ruby-rails-agile-sharing-presentations/#comments</comments>
		<pubDate>Sun, 10 Jul 2011 04:10:42 +0000</pubDate>
		<dc:creator>Martin Cabrera</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[moove-it]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[workshops]]></category>
		<category><![CDATA[ariel ludueña]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[gabriel chertok]]></category>
		<category><![CDATA[gianfranco zas]]></category>
		<category><![CDATA[martin cabrera]]></category>
		<category><![CDATA[ort]]></category>
		<category><![CDATA[pablo ifran]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=677</guid>
		<description><![CDATA[The last Wednesday we made a workshop in the ORT University. Pablo Ifran, Gianfranco Zas, Ariel Ludueña and I We share the presentations to everybody All_in_One_Agile_Development (in spanish) Ruby_and_Rails (in spanish)]]></description>
			<content:encoded><![CDATA[<p>The last Wednesday we made a workshop in the ORT University.<br />
Pablo Ifran, Gianfranco Zas, Ariel Ludueña and I</p>
<p>We share the presentations to everybody</p>
<p><a href="http://blog.moove-it.com/wp-content/uploads/2011/07/All_in_One_Agile_Development.pdf" target="_blank">All_in_One_Agile_Development</a> (in spanish)</p>
<p><a href="http://blog.moove-it.com/wp-content/uploads/2011/07/Ruby_and_Rails.pdf" target="_blank">Ruby_and_Rails</a> (in spanish)</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/ruby-rails-agile-sharing-presentations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Workshop of Ruby + Ruby on Rails + SCRUM at ORT University &#8211; July 6, 2011</title>
		<link>http://blog.moove-it.com/workshop-of-ruby-ruby-on-rails-scram-at-ort-university-july-6-2011/</link>
		<comments>http://blog.moove-it.com/workshop-of-ruby-ruby-on-rails-scram-at-ort-university-july-6-2011/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 14:24:01 +0000</pubDate>
		<dc:creator>Martin Cabrera</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[talks]]></category>
		<category><![CDATA[workshops]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agile development]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[ort]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=663</guid>
		<description><![CDATA[Moove-IT is now part of the Ruby on Rails Workshops and Conferences around the world. Even when Ruby seems to be the most popular modern programming language in America, there was nowhere in Uruguay you could actually learn it. Moove-IT will give you a heads up on this exciting language and Rails framework on July [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Moove-IT is now part of the Ruby on Rails Workshops and Conferences around the world.</strong></p>
<p>Even when Ruby seems to be the most popular modern programming language in America, there was nowhere in Uruguay you could actually learn it. Moove-IT will give you a heads up on this exciting language and Rails framework on July 6, 2011 (please see ad below).</p>
<p>This will be the first in a series of workshops focusing on Ruby, RoR, Scrum and hands on training exercises.</p>
<p>We are so proud to have made so much progress working with this technology and methodology that we feel the need to contribute to the local Ruby community.</p>
<p>Join us! Be part.</p>
<p><a href="http://blog.moove-it.com/wp-content/uploads/2011/06/taller-scrum-v5.jpg" target="_blank" rel="lightbox[663]" title="workshop Ruby on Rails"><img class="alignleft size-large wp-image-664" title="workshop Ruby on Rails" src="http://blog.moove-it.com/wp-content/uploads/2011/06/taller-scrum-v5-1024x723.jpg" alt="" width="738" height="521" /></a></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/workshop-of-ruby-ruby-on-rails-scram-at-ort-university-july-6-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby on rails for mobiles</title>
		<link>http://blog.moove-it.com/ruby-on-rails-for-mobiles/</link>
		<comments>http://blog.moove-it.com/ruby-on-rails-for-mobiles/#comments</comments>
		<pubDate>Fri, 06 May 2011 22:25:45 +0000</pubDate>
		<dc:creator>sebastian.sassi</dc:creator>
				<category><![CDATA[ipad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=607</guid>
		<description><![CDATA[Time ago, one of our customers asked us to implement a new web project with support for smartphones. The objective was to support the most common operating systems: iOS, android, blackberry, symbian, with the possibility of using the phone capabilities (gps, sound and vibration). After researching on different frameworks and technologies we have arrived to [...]]]></description>
			<content:encoded><![CDATA[<p>Time ago, one of our customers asked us to implement a new web project with support for smartphones. The objective was to support the most common operating systems: iOS, android, blackberry, symbian, with the possibility of using the phone capabilities (gps, sound and vibration).<br />
After researching on different frameworks and technologies we have arrived to some conclusions that I would like to share with people who have had the same dilemma of choosing a good framework to use.<br />
I must say that this research was based on data taken from different sources (both official and unofficial), and also having taken some particular decisions while evaluating the alternatives, that do not have to match with your own criteria.</p>
<p>First of all, we classified the available options into two different categories:</p>
<ul>
<li>&#8216;Native&#8217; Development frameworks: Rhodes, NimbleKit, Titanium (this is new to the list), PhoneGap</li>
<li>Javascript libraries: Sencha, JQTouch, JQuery mobile</li>
</ul>
<p><strong>Rhodes</strong></p>
<p>According to the official description, The Rhodes application framework allows developers to create native mobile applications with portability of editing HTML templates and the power of the Ruby programming language. Applications written in Rhodes exhibit the performance and richness of apps written to the native device operating systems with local data but enable developers to have the productivity of web interfaces in HTML. Developers write their applications once and they then run on all major mobile device operating systems: iPhone, Windows Mobile, Blackberry and more.</p>
<p>Advantages:</p>
<ul>
<li>Programming in Ruby</li>
<li>Full access to the Device API (Application looks different in each device)</li>
<li>Several devices supported: IPhone, BlackBerry, Android, Windows mobile</li>
<li>RhoSync: RhoSync retrieves data via web services (REST or SOAP) from backend enterprise applications for distribution to downstream mobile devices.</li>
</ul>
<p>Disadvantages:</p>
<ul>
<li>Licensing: It is a commercial product. Costs arround U$S 500 per project.</li>
</ul>
<p><strong>NimbleKit</strong></p>
<p>NimbleKit says that it is a framework to create applications for iPhone and iPod touch fast. Programmers do not need to know Objective-C or iPhone SDK. All they need is to know how to write an HTML page with Javascript code.</p>
<p>Advantages:</p>
<ul>
<li>HTML, CSS &amp; Javascript</li>
</ul>
<p>Disadvantages</p>
<ul>
<li>It only works for iphone, ipods &amp; ipads.</li>
</ul>
<p><strong>Titanium &amp; PhoneGap</strong></p>
<p>From architectural standpoint, these two frameworks are very similar. Titanium and PhoneGap expose the smartphone features through a set of Javascript APIs, while the application’s logic (html, css, javascript) runs inside a native WebView control. Through the javascript APIs, the “web app” has access to the mobile phone functions such as Geolocation, Accelerometer Camera, Contacts, Database, File system, and so on.</p>
<p>The differences:</p>
<p>PhoneGap does not expose the native UI components to javascript. Titanium, on the other hand, has a comprehensive UI API that can be called in javascript to create and control all kinds of native UI controls. Utilizing these UI APIs, a Titanium app can look more “native” than a PhoneGap app. Second, PhoneGap supports more mobile phone platforms than Titanium does. PhoneGap APIs are more generic and can be used on different platforms such as iPhone, Android and Blackberry. Titanium is primarily targeting iPhone and Android. Some of its APIs are platform specific (like the iPhone UI APIs). The use of these APIs will reduce the cross-platform capability of your application.<br />
If your concern for your app is to make it more “native” looking, Titanium is a better choice. If you want to be able to “port” your app to another platform more easily, PhoneGap will be better.</p>
<p>Advantages:</p>
<ul>
<li>Multi device</li>
<li>Programming in HTML, CSS &amp; Javascript</li>
<li>MIT License</li>
</ul>
<p>Disadvantages:</p>
<ul>
<li>Some devices native features are not exposed in the API</li>
</ul>
<p><strong>Sencha</strong></p>
<p>According to the official documentation, Sencha Touch is the first app framework built specifically to leverage HTML5, CSS3, and Javascript for the highest level of power, flexibility, and optimization. They make specific use of HTML5 to deliver components like audio and video, as well as a localStorage proxy for saving data offline. They have made extensive use of CSS3 in our stylesheets to provide the most robust styling layer possible.<br />
Altogether, the entire library is under 80kb (gzipped and minified), and it is trivial to make that number even smaller by disabling unused components or styles.</p>
<p>Advantages</p>
<ul>
<li>Great UI Controls</li>
<li>Multi device</li>
</ul>
<p>Disadvantages</p>
<ul>
<li>Commercial license (U$S 1.800 for 5 developers)</li>
</ul>
<p><strong>JQTouch</strong><br />
It is &#8220;A jQuery plugin for mobile web development on the iPhone, iPod Touch, and other forward-thinking devices.&#8221; [1]</p>
<p>Advantages</p>
<ul>
<li>Great UI Controls</li>
<li>Multi device</li>
<li>MIT License</li>
</ul>
<p>Disadvantages</p>
<ul>
<li>Is focused on small screen devices</li>
<li>It&#8217;s a jquery plugin</li>
<li>It was created in 2009 by David Kaneda and has been relatively quiet until release of beta 3 (April 24th 2011).</li>
</ul>
<p><strong>JQuery Mobile</strong><br />
It is a unified user interface system across all popular mobile device platforms, built on jQuery and jQuery UI foundation. Its lightweight code is built with progressive enhancement, and has a flexible, easily themeable design.</p>
<p>Advantages</p>
<ul>
<li>Multi device (See <a href="http://jquerymobile.com/gbs/">http://jquerymobile.com/gbs/</a>) (supports much more devices than JQTouch)</li>
<li>Very simple to use</li>
<li>John Resig, JQuery&#8217;s founder is one of the main developers and it is a high activity project</li>
<li>It is not a jquery plugin, it is a new framework</li>
<li>Dual licensed under MIT and GPL Version 2</li>
</ul>
<p>Disadvantages</p>
<ul>
<li>It is still in Alpha version</li>
</ul>
<p><strong>CONCLUSION</strong><br />
After evaluating the different frameworks, we arrived at the next conclusions:<br />
We should use a framework that generates html + css + js, because this technology guarantees a long term support on different devices<br />
We should use a framework that supports access to devices specific capabilities (i.e. sound, gps, camera, vibration, data, etc.) in case we need them in a near future<br />
Because we prefer unrestrictive licenses (MIT, BSD, LGPL and others) our options are reduced to: PhoneGap, Titanium &amp; JQTouch.</p>
<p>Finally, we choose <strong>PhoneGap + JQuery mobile</strong> because they are open technologies and support multiple platforms. Also, resulting interfaces are similar across different devices and that is a desired feature for our users.<br />
JQTouch and JQuery mobile are awesome frameworks to develop mobile applications, but we prefer to choose JQuery Mobile since it support much more devices (altough it is in alpha version), has high activity and is not just optimized for WebKit as jQtouch does.<br />
We also think that JQuery Mobile is pretty easy to use, the resulting interfaces are usable and has many components to use.</p>
<p>The rest of the story is pretty easy ( just because we use Ruby on Rails <img src='http://blog.moove-it.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  ), you should create some helpers that adds the JQuery Mobile features to the pages, or use some existent plugin, you can find a starting guide here: <a href="http://goo.gl/5Soyq">http://goo.gl/5Soyq</a>.</p>
<p>I hope you find this post useful, have a nice coding!</p>
<p>[1]: forward-thinking: Someone who is forward-thinking is thinking progressively and possesses the ability to look beyond the &#8220;now&#8221; and formulate strategies for future success. They are constantly asking &#8220;what&#8217;s next?&#8221;.</p>
<p>Sources:</p>
<ul>
<li><a href="http://www.phonegap.com/">http://www.phonegap.com/</a></li>
<li><a href="http://www.nimblekit.com/">http://www.nimblekit.com/</a></li>
<li><a href="http://rhomobile.com/">http://rhomobile.com/</a></li>
<li><a href="http://www.jqtouch.com/">http://www.jqtouch.com/</a></li>
<li><a href="http://jquerymobile.com/">http://jquerymobile.com/</a></li>
<li><a href="http://www.sencha.com/products/touch/">http://www.sencha.com/products/touch/</a></li>
<li><a href="http://fuelyourcoding.com/getting-started-with-jquery-mobile-rails-3/">http://fuelyourcoding.com/getting-started-with-jquery-mobile-rails-3/</a></li>
</ul>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/ruby-on-rails-for-mobiles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rules Engine &#8211; Java(Drools) &amp; Ruby(ruleby)</title>
		<link>http://blog.moove-it.com/rules-engine-java-drools-ruby-ruleby/</link>
		<comments>http://blog.moove-it.com/rules-engine-java-drools-ruby-ruleby/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 18:57:20 +0000</pubDate>
		<dc:creator>Martin Cabrera</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[moove-it]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[drools]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[ruleby]]></category>
		<category><![CDATA[rules]]></category>
		<category><![CDATA[rules engine]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=549</guid>
		<description><![CDATA[Today we made one presentation with the whole team of moove-it about rules engine in Java and Ruby. We talk about Drools and ruleby. We share the presentation &#8230; Rules Engine &#8211; java(Drools) &#38; ruby(ruleby) View more presentations from martincabrera.]]></description>
			<content:encoded><![CDATA[<p>Today we made one presentation with the whole team of moove-it about rules engine in Java and Ruby.</p>
<p>We talk about Drools and ruleby.</p>
<table>
<tbody>
<tr>
<td><a href="http://blog.moove-it.com/wp-content/uploads/2010/12/drools.jpg" rel="lightbox[549]" title="drools"><img class="alignleft size-medium wp-image-553" title="drools" src="http://blog.moove-it.com/wp-content/uploads/2010/12/drools-300x169.jpg" alt="" width="300" height="169" /></a></td>
<td><a href="http://blog.moove-it.com/wp-content/uploads/2010/12/drools_2.jpg" rel="lightbox[549]" title="drools_2"><img class="alignleft size-medium wp-image-554" title="drools_2" src="http://blog.moove-it.com/wp-content/uploads/2010/12/drools_2-300x169.jpg" alt="" width="300" height="169" /></a></td>
</tr>
</tbody>
</table>
<p>We share the presentation &#8230;</p>
<div id="__ss_6022058" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Rules Engine - java(Drools) &amp; ruby(ruleby)" href="http://www.slideshare.net/martincabrera/rules-engine-java-rails">Rules Engine &#8211; java(Drools) &amp; ruby(ruleby)</a></strong><object id="__sse6022058" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=motorresdereglas-javarails-101203122600-phpapp01&amp;stripped_title=rules-engine-java-rails&amp;userName=martincabrera" /><param name="name" value="__sse6022058" /><param name="allowfullscreen" value="true" /><embed id="__sse6022058" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=motorresdereglas-javarails-101203122600-phpapp01&amp;stripped_title=rules-engine-java-rails&amp;userName=martincabrera" name="__sse6022058" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/martincabrera">martincabrera</a>.</div>
</div>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/rules-engine-java-drools-ruby-ruleby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails security</title>
		<link>http://blog.moove-it.com/rails-security/</link>
		<comments>http://blog.moove-it.com/rails-security/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 11:30:53 +0000</pubDate>
		<dc:creator>Pablo Ifran</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[production]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=378</guid>
		<description><![CDATA[When you are working with svn (pulling your project from the svn to the web server) and you want to deploy a system into production with apache (mod_rails), you must filter the svn folders (to prevent that other users view your svn files). To do that task, you must add the following lines to the [...]]]></description>
			<content:encoded><![CDATA[<p>When you are working with svn (pulling your project from the svn to the web server) and you want to deploy a system into production with apache (mod_rails), you must filter the svn folders (to prevent that other users view your svn files).</p>
<p>To do that task, you must add the following lines to the apache configuration.</p>
<p><code><br />
&lt;DirectoryMatch "^/.*/\.svn/"&gt;<br />
&nbsp;&nbsp;ErrorDocument 403 /404.html<br />
&nbsp;&nbsp;Order allow,deny<br />
&nbsp;&nbsp;Deny from all<br />
&nbsp;&nbsp;Satisfy All<br />
&lt;/DirectoryMatch&gt;<br />
</code></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/rails-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Game for the &#8220;Plan Ceibal&#8221; // Children managing a neighborhood</title>
		<link>http://blog.moove-it.com/game-plan-ceibal-to-management-a-neighborhood/</link>
		<comments>http://blog.moove-it.com/game-plan-ceibal-to-management-a-neighborhood/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 17:43:01 +0000</pubDate>
		<dc:creator>Martin Cabrera</dc:creator>
				<category><![CDATA[ceibal]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[moove-it]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[social network]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[abrojo]]></category>
		<category><![CDATA[imm]]></category>
		<category><![CDATA[olpc]]></category>
		<category><![CDATA[plan ceibal]]></category>
		<category><![CDATA[xo]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=279</guid>
		<description><![CDATA[We showed the first prototype of the game developed for the &#8220;Plan Ceibal&#8221; (www.ceibal.org.uy). The game is web based and specially designed for children using a XO computer. Plan Ceibal The One Laptop Per Child Association, Inc. (OLPC) is a U.S. non-profit organization set up to oversee the creation of an affordable educational device for use in the [...]]]></description>
			<content:encoded><![CDATA[<table border="0">
<tbody>
<tr>
<td><a href="http://blog.moove-it.com/wp-content/uploads/2010/03/ceibal.jpg" rel="lightbox[279]" title="ceibal"><img class="alignleft size-full wp-image-353" title="ceibal" src="http://blog.moove-it.com/wp-content/uploads/2010/03/ceibal.jpg" alt="ceibal" width="274" height="100" /></a></td>
<td></td>
<td><img class="alignleft size-medium wp-image-296" title="screenshot of the game" src="http://blog.moove-it.com/wp-content/uploads/2010/03/layout-05-300x225.jpg" alt="screenshot of the game" width="300" height="225" /></td>
<td></td>
</tr>
</tbody>
</table>
<p>We showed the first prototype of the game developed for the &#8220;Plan Ceibal&#8221; (<a href="http://www.ceibal.org.uy">www.ceibal.org.uy</a>). The game is web based and specially designed for children using a XO computer.</p>
<p><strong><span style="text-decoration: underline;">Plan Ceibal</span></strong></p>
<p>The One Laptop Per Child Association, Inc. (OLPC) is a <a title="United States" href="http://en.wikipedia.org/wiki/United_States">U.S.</a> <a title="Non-profit organization" href="http://en.wikipedia.org/wiki/Non-profit_organization">non-profit organization</a> set up to oversee the creation of an affordable educational device for use in the <a title="Developing country" href="http://en.wikipedia.org/wiki/Developing_country">developing world</a>. Its mission is &#8220;to create educational opportunities for the world&#8217;s poorest children by providing each child with a rugged, low-cost, low-power, connected laptop with content and software designed for collaborative, joyful, self-empowered learning.&#8221;</p>
<p>“Uruguay is the first country in accept the challenge”</p>
<p><a href="http://blogs.worldbank.org/edutech/videos/uruguays-plan-ceibal-the-worlds-most-ambitious-roll-out-of-educational-technologies"><span style="font-weight: normal;">Worldbank.org &#8211; Uruguay&#8217;s Plan Ceibal: The world&#8217;s most ambitious roll-out of educational technologies?</span></a></p>
<p><span style="text-decoration: underline;"><strong>The Game</strong></span></p>
<p>Moove-IT and El Abrojo (a Uruguayan Social Organization who works with poor children) are working in the development of an online game for the XO computers.</p>
<p>This game is financed by the IMM (Government of Montevideo) and his main objective is promote good habits between children. This tool is an online game in which the children works with themes relative to the daily environment care. Each child works in groups with their classmates and also with other schools in any location of the country.</p>
<p>They will be able to: build houses, create commercial areas, create rural areas, maintain clean the neighborhood, and manage parks, among others things.</p>
<p>The points are generated by answering simple questions and doing simple tests. The tests and the answers are validated by the collective. This means that players themselves determine whether an answer is correct or not.</p>
<p>Here you have an initial slide of the game with some screenshots. (The slide is in Spanish)</p>
<div id="__ss_3445932" style="width: 425px;"><strong><a title="Presentación Juego para el plan ceibal" href="http://www.slideshare.net/martincabrera/presentacin-juego-para-el-plan-ceibal">Presentación Juego para el plan ceibal</a></strong><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentacinlunes15-100316100524-phpapp02&amp;stripped_title=presentacin-juego-para-el-plan-ceibal" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentacinlunes15-100316100524-phpapp02&amp;stripped_title=presentacin-juego-para-el-plan-ceibal" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p>We will put this Game on production in April 20, 2010</p>
<table border="0">
<tbody></tbody>
</table>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/game-plan-ceibal-to-management-a-neighborhood/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby Benchmarks</title>
		<link>http://blog.moove-it.com/206/</link>
		<comments>http://blog.moove-it.com/206/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 21:46:59 +0000</pubDate>
		<dc:creator>Gian Zas</dc:creator>
				<category><![CDATA[moove-it]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[ruby performance benchmarks]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=206</guid>
		<description><![CDATA[One of the most popular rants against ruby are based on its not so good performance. Actually has been made improvements on this topic, specially in the new Ruby implementation (Ruby 1.9) based on the YARV virtual machine. JRuby (Ruby over JVM implementation) has been focused in its performance from its lastest releases. Here at [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most popular rants against <span style="color: #333399;"><strong>ruby</strong></span> are based on its not so good <span style="color: #333399;"><strong>performance.</strong></span></p>
<p>Actually has been made improvements on this topic, specially in the new Ruby implementation (<strong><span style="color: #333399;">Ruby 1.9</span></strong>) based on the <strong><span style="color: #333399;">YARV </span></strong>virtual machine.</p>
<p><strong><span style="color: #333399;">JRuby</span></strong> (Ruby over <span style="color: #333399;"><strong>JVM </strong></span>implementation) has been focused in its performance from its lastest releases. Here at moove-it we are exploring the posibility of use <span style="color: #333399;"><strong>Rails </strong></span>over JRuby in some <strong><span style="color: #333399;">JEE </span></strong>application servers, so we need some facts about JRuby performance (and other topics like gems compatibility, etc)</p>
<p>The Ruby community has put a set of benchmarks at ruby1.9 trunk: <a title="http://svn.ruby-lang.org/repos/ruby/trunk/benchmark/" href="http://svn.ruby-lang.org/repos/ruby/trunk/benchmark/"><span style="color: #333399;">http://svn.ruby-lang.org/repos/ruby/trunk/benchmark/</span></a></p>
<p>So, we test with these benchmarks and here are the results!.</p>
<p>The code that run the benchmarks is like that:</p>
<pre>block_to_benchmark = lambda { load BENCHMARKS_DIR + '/' + filename}
Benchmark.measure &amp;block_to_benchmark</pre>
<p>(yes, we are using the benchmark module bundled with the ruby standard lib)</p>
<table style="border-collapse: collapse; height: 1054px;" border="0" cellspacing="0" cellpadding="0" width="666">
<col style="width: 143pt;" width="190"></col>
<col style="width: 60pt;" span="4" width="80"></col>
<col style="width: 68pt;" width="90"></col>
<tbody>
<tr style="height: 12.75pt;" height="17">
<td class="xl25" style="height: 12.75pt; width: 100pt;" width="120" height="17">
<p style="text-align: left;"><strong>Benchmark<br />
</strong></td>
<td class="xl25" style="width: 60pt;" width="80">
<p style="text-align: right;"><strong> Ruby1.8</strong></p>
</td>
<td class="xl25" style="width: 60pt;" width="80">
<p style="text-align: right;"><strong> Ruby1.9<br />
</strong></td>
<td class="xl25" style="width: 60pt;" width="80">
<p style="text-align: right;"><strong> JRuby1.3.0<br />
</strong></td>
<td class="xl25" style="width: 80pt;" width="100">
<p style="text-align: right;"><strong> Ruby1.8 /</strong></p>
<p style="text-align: right;"><strong> Ruby1.9</strong></p>
</td>
<td class="xl25" style="width: 80pt;" width="100">
<p style="text-align: right;"><strong> Ruby1.8 / </strong></p>
<p style="text-align: right;"><strong> JRuby1.3.0</strong></p>
</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="height: 12.75pt;" height="17">bm_app_fib.rb</td>
<td class="xl27" style="border-left: medium none;" align="right">9.02</td>
<td class="xl27" style="border-left: medium none;" align="right">4.00</td>
<td class="xl27" style="border-left: medium none;" align="right">3.83</td>
<td class="xl27" style="border-left: medium none;" align="right">2.25</td>
<td class="xl27" style="border-left: medium none;" align="right">2.36</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_app_mandelbrot.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.36</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">0.81</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.49</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">4.14</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.26</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_app_pentomino.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">144.24</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">91.97</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">105.64</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.57</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.37</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_app_raise.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">6.94</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">6.98</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.63</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.01</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">4.27</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_app_strconcat.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.94</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.63</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.30</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.81</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.27</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_app_tak.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">12.27</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">5.66</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">4.06</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.17</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.02</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_app_tarai.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">9.81</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">4.83</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.27</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.03</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.00</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_app_uri.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">6.59</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.77</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.69</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.75</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.79</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_io_file_create.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">7.17</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.12</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">7.70</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.30</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.07</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_io_file_read.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.27</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">0.61</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">0.64</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.71</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.54</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_io_file_write.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.77</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">10.98</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">0.31</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-6.22</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">5.64</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_loop_for.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.97</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">7.81</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">7.50</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-2.63</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-2.53</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_loop_generator.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">149.64</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.00</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">10.95</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">49.88</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">13.66</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_loop_times.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">4.88</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">6.88</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">7.95</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.41</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.63</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_loop_whileloop.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">11.23</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.67</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">9.42</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.06</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.19</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_loop_whileloop2.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.33</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">0.72</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.89</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.24</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.23</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_array.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">8.41</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">7.33</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">16.17</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.15</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.92</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_binary_trees.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">4.50</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.14</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.84</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.10</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.58</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_concatenate.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.49</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.95</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.03</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.27</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.22</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_exception.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">7.62</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">10.42</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.63</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.37</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.90</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_fasta.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">13.59</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">11.77</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">16.03</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.16</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.18</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_lists.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.27</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.38</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.48</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.65</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.53</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_mandelbrot.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">44.55</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">32.49</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">49.28</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.37</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.11</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_matrix.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.69</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.13</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.84</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.26</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.46</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_meteor_contest.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">52.55</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">25.17</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">22.02</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.09</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.39</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_nbody.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">35.80</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">26.61</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">16.78</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.35</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.13</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_nested_loop.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">6.09</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">6.88</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">8.64</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.13</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.42</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_nsieve.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">26.89</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">13.11</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">24.69</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.05</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.09</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_nsieve_bits.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">62.50</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">46.05</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">42.55</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.36</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.47</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_object.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">11.56</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">11.52</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.11</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.00</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.72</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_partial_sums.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">80.13</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">228.91</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">31.22</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-2.86</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.57</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_pidigits.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">10.33</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">10.44</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">7.03</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.01</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.47</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_random.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">4.59</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">12.88</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.86</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-2.80</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.47</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_sieve.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">0.84</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">0.34</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">0.63</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.45</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.35</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_so_spectralnorm.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">41.86</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">92.88</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">20.03</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-2.22</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.09</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm1_block.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">26.22</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">13.44</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">27.44</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.95</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.05</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm1_const.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">19.02</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">6.27</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">17.64</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.03</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.08</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm1_ensure.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">20.06</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">5.11</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">16.19</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.93</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.24</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm1_ivar.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">17.95</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">9.50</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">18.78</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.89</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.05</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm1_ivar_set.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">19.22</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">9.83</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">21.67</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.96</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.13</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm1_length.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">22.95</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">7.44</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">18.16</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.09</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.26</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm1_neq.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">20.81</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">6.58</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">14.98</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.16</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.39</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm1_not.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">14.91</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">5.58</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">12.64</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.67</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.18</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm1_rescue.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">15.72</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">4.64</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">21.38</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.39</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.36</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm1_simplereturn.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">23.84</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">9.66</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">16.05</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.47</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.49</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm1_swap.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">50.25</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">5.73</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">24.38</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">8.76</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.06</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm2_array.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">10.72</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">19.27</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">5.42</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.80</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.98</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm2_case.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">5.06</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.66</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">4.00</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.06</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.27</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm2_eval.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">32.20</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">200.98</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">69.41</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-6.24</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-2.16</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm2_method.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">15.45</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">9.45</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">11.36</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.63</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.36</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm2_mutex.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">5.47</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">6.34</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">7.30</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.16</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.33</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm2_poly_method.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">20.61</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">12.16</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">21.05</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.70</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-1.02</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm2_poly_method_ov.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">5.00</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.66</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">4.53</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.02</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.10</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm2_proc.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">12.00</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.86</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">6.75</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.11</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.78</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm2_regexp.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">5.89</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">19.25</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">5.63</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-3.27</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.05</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm2_send.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">5.05</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.11</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">4.38</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.39</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.15</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm2_super.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">5.75</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.17</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">4.44</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.81</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.30</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm2_unif1.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">5.20</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.99</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.61</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">2.62</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.44</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm2_zsuper.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">6.87</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">3.48</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">5.49</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.97</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.25</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td class="xl26" style="border-top: medium none; height: 12.75pt;" height="17">bm_vm3_thread_create_join.rb</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">1.95</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">7.70</td>
<td class="xl27" style="border-top: medium none; border-left: medium none;" align="right">19.13</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-3.94</td>
<td class="xl27" style="color: maroon; font-weight: 700;" align="right">-9.79</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td style="height: 12.75pt;" height="17">bm_vm3_gc.rb</td>
<td class="xl24" align="right">292.30</td>
<td class="xl24" align="right">266.14</td>
<td class="xl24" align="right">0.36</td>
<td class="xl24" align="right">1.10</td>
<td class="xl24" align="right">814.20</td>
</tr>
</tbody>
</table>
<p>.</p>
<p>A looser conclusion may be that <span style="color: #333399;"><strong>Ruby 1.9</strong></span> is <span style="color: #333399;"><strong>95%</strong></span> faster than Ruby1.8, and <span style="color: #333399;"><strong>JRuby 1.3.0</strong></span> is <strong><span style="color: #333399;">10% </span></strong>faster than 1.8, in general the new implementations are faster than Ruby1.8,  especially 1.9 (twice as faster).</p>
<p>The benchmarks were under <strong><span style="color: #333399;">WindowsXP  SP3</span></strong>, <span style="color: #333399;"><strong>4GB RAM</strong></span>, and a Intel <span style="color: #333399;"><strong>Core 2 duo 2.0GHz.</strong></span> Happy hacking!</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/206/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

