<?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; performance</title>
	<atom:link href="http://blog.moove-it.com/category/performance/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>Bullet: a gem to help reduce N+1 queries</title>
		<link>http://blog.moove-it.com/bullet-a-gem-to-help-reduce-n1-queries/</link>
		<comments>http://blog.moove-it.com/bullet-a-gem-to-help-reduce-n1-queries/#comments</comments>
		<pubDate>Thu, 11 Nov 2010 21:19:07 +0000</pubDate>
		<dc:creator>Lucía Escanellas</dc:creator>
				<category><![CDATA[performance]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=438</guid>
		<description><![CDATA[Bullet is a plugin written by Richard Huang, that helps reducing the number of queries an application makes. It was first posted on 2009, but it is still a pretty useful gem to monitor your application for performance improvements. It has several ways of notifying problems: by Growl notifications, JavaScript alerts by default, and even [...]]]></description>
			<content:encoded><![CDATA[<p>Bullet is a plugin written by Richard Huang, that helps reducing the number of queries an application makes. It was first posted on 2009, but it is still a pretty useful gem to monitor your application for performance improvements.<br />
It has several ways of notifying problems: by Growl notifications, JavaScript alerts by default, and even using XMPP too. Additionally, it saves on its own bullet.log the exact line and stack trace of what caused the alert, and if you want to, it can also write to the application log.<br />
<br />
The project is on GitHub: <a href="http://github.com/flyerhzm/bullet">http://github.com/flyerhzm/bullet </a></p>
<p>You are probably familiar with the N+1 query and cache counter problems, so let&#8217;s look how Bullet will detect these by monitoring the database queries.</p>
<p><strong>The N+1 query problem</strong></p>
<p>Suppose we have our application with accounts having many rate plans:</p>
<p><code> </code></p>
<pre>class RatePlan &lt; ActiveRecord::Base
  belongs_to :account
end
</pre>
<p>If we iterate over the rate plans, accessing rate plans attributes, like:</p>
<p><code> </code></p>
<pre>RatePlan.all.each {
  |post| puts "#{rate_plan.name}, by #{rate_plan.account.name}"
}</pre>
<p>Will be using N+1 queries:</p>
<ul>
<li> one query to get all the rate plans</li>
<li>then, for each rate plan, one query to get the corresponding account.</li>
</ul>
<p>(This means that if we have 1000 posts, we&#8217;ll be doing 1000+1 queries)</p>
<p>By using the :include option, we can retrieve the rate plans and their corresponding accounts on the same query:</p>
<pre>RatePlan.find(:all, :include =&gt; :account).each {
   |post| puts "#{rate_plan.name}, by #{rate_plan.account.name}"
}</pre>
<p>By detecting if we forgot to use eager loading or a counter cache, Bullet can save time looking for problems on the fly.<br />
For example, Bullet will show this message:</p>
<p style="text-align: center"><a href="http://blog.moove-it.com/wp-content/uploads/2010/11/message.png" rel="lightbox[438]" title="Bullet: a gem to help reduce N+1 queries"><img class="size-medium wp-image-439 aligncenter" src="http://blog.moove-it.com/wp-content/uploads/2010/11/message-300x104.png" alt="N+1 Query Detected Message" width="300" height="104" /></a></p>
<p>We have to be careful not to abuse the :include option. If the rate_plans table is big enough, it could take too much server memory. Also, we could end up with big, slow requests, or getting from the server a lot of data that won&#8217;t be used. Bullet will show a message if it detects an unused eager loading.</p>
<p><strong>Cache counters</strong></p>
<p>Cache counters is another improvement in a one-to-many relationship. Because the _has_many_ relationship defines an attribute that is a collection, if we use the size property on this attribute, it will trigger a select count(*) on the child table. This is generally acceptable, except when we are using frequently count and we end up going to the database unnecessarily.<br />
In order to avoid that, we can use counter caching: Active Record will maintain for a parent table the number of child references. Bullet also shows a message if it finds a cache counter is needed.</p>
<p><strong>Configuration</strong></p>
<p>You have to first install the gem, by adding it to the Gemfile, or by installing manually:</p>
<p><code> </code></p>
<pre>sudo gem install bullet --pre</pre>
<p>The next thing is to add some configuration to the development environment. Bullet won&#8217;t do anything unless you configure it explicitly, and also note that it&#8217;s not a good idea to configure it on the production environment, because on that case your users would also receive those N+1 query alerts.</p>
<p>Configuration allows Growl notifications, and sending messages by XMPP (Jabber), but since the default JavaScript alerts are good enough for me, I configured it like this:</p>
<p><code> </code></p>
<pre>config.after_initialize do
  Bullet.enable = true
  Bullet.alert = true
  Bullet.bullet_logger = true
  Bullet.console = true
  Bullet.growl = false
  Bullet.rails_logger = true
  Bullet.disable_browser_cache = true
end</pre>
<p>Note the last option, because disabling browser cache can save you some trouble on some configurations. In any case, if Bullet is not working, try first disabling browser cache.</p>
<p>With this configuration, it will show a JavaScript alert, the same message on the console, and the detail and stack trace on the bullet.log.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/bullet-a-gem-to-help-reduce-n1-queries/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>
		<item>
		<title>Trick to improve performance in rails, less requests with static resources</title>
		<link>http://blog.moove-it.com/improving-performance-with-a-few-requests-in-rails/</link>
		<comments>http://blog.moove-it.com/improving-performance-with-a-few-requests-in-rails/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 15:30:38 +0000</pubDate>
		<dc:creator>Pablo Ifran</dc:creator>
				<category><![CDATA[performance]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://blog.moove-it.com/?p=161</guid>
		<description><![CDATA[Reducing the number of request made to the server improves the performance of a web application in about 80%. There are many techniques that allow us to reduce the amount of requests that are made on a page, among them are: the sprites, put the stylesheets on top of the page, javascripts compress, among others. [...]]]></description>
			<content:encoded><![CDATA[<p>Reducing the number of request made to the server improves the performance of a web application in about <strong>80%</strong>.</p>
<p>There are many techniques that allow us to reduce the amount of requests that are made on a page, among them are: the sprites, put the stylesheets on top of the page, javascripts compress, among others.</p>
<p><em>But what&#8217;s offered by Rails to improve the performance of our web application?</em></p>
<p>It offers a great plugin called bundle_fu (http://code.google.com/p/bundle-fu/)<br />
It allows us with a single request obtain all the javascripts and with another request all the stylesheets  (it also offers the possibility of compress javascripts).<br />
Using this plugin is really easy but it&#8217;s very powerfull</p>
<pre>&lt;% bundle do -%&gt;
  &lt;%= javascript_include_tag :default -%&gt;
  &lt;%= javascript_include_tag "javascript1" -%&gt;
  &lt;%= javascript_include_tag "javascript2" -%&gt;
  &lt;%= javascript_include_tag "javascript3" -%&gt;
  &lt;%= stylesheet_link_tag "style1" -%&gt;
  &lt;%= stylesheet_link_tag "style2" -%&gt;
  &lt;%= stylesheet_link_tag "style3" -%&gt;
  ...
&lt;% end %&gt;</pre>
<p>All these javascripts and stylesheets are converted in only two files when the request is processed.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.moove-it.com/improving-performance-with-a-few-requests-in-rails/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

