<?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>Marco Mastrodonato &#187; Python</title>
	<atom:link href="http://mastrodonato.info/index.php/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://mastrodonato.info</link>
	<description>Non c&#039;e&#039; prezzo per la miticita&#039;</description>
	<lastBuildDate>Wed, 21 Sep 2011 07:12:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Files di grandi dimensioni su Windows Server 2008 R2 64Bit</title>
		<link>http://mastrodonato.info/index.php/2011/04/files-grandi-dimensioni-windows-server-2008-r2-64bit/</link>
		<comments>http://mastrodonato.info/index.php/2011/04/files-grandi-dimensioni-windows-server-2008-r2-64bit/#comments</comments>
		<pubDate>Thu, 21 Apr 2011 14:57:57 +0000</pubDate>
		<dc:creator>Marco Mastrodonato</dc:creator>
				<category><![CDATA[IronRuby .NET]]></category>
		<category><![CDATA[JRuby]]></category>
		<category><![CDATA[Prestazioni]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Benchmark]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Files]]></category>
		<category><![CDATA[IronRuby]]></category>
		<category><![CDATA[jRuby]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://mastrodonato.info/?p=665</guid>
		<description><![CDATA[Nel precedente articolo ho esaminato la semplice lettura e scrittura di tre files con dimensioni da 330Mb a 2,6Gb, su un normalissimo PC con Windows XP. Ora vediamo cosa cambia su un server virtuale, sistema produttivo che coinvolge un numero di aziende sempre più ampio. I linguaggi in esame sono i seguenti: Ruby 1.8.6 p383 [...]]]></description>
			<content:encoded><![CDATA[<p>Nel <a href="http://mastrodonato.info/index.php/2011/04/ruby-python-php-lua-comparazione-files-grandi-dimensioni/">precedente articolo</a> ho esaminato la semplice lettura e scrittura di tre files con dimensioni da 330Mb a 2,6Gb, su un normalissimo PC con Windows XP. Ora vediamo cosa cambia su un server virtuale, sistema produttivo che coinvolge un numero di aziende sempre più ampio.</p>
<p>I linguaggi in esame sono i seguenti:</p>
<p>Ruby 1.8.6 p383 (2009-08-04) [i386-mingw32]<br />
Ruby 1.8.7 p334 (2011-02-18) [i386-mingw32]<br />
Ruby 1.9.2 p180 (2011-02-18) [i386-mingw32]<br />
jruby 1.6.1 (ruby-1.8.7-p330) (2011-04-12) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_23) [Windows Server 2008 R2-amd64-java]<br />
IronRuby 1.1.3.0 (ruby-1.9.2) on .NET 4.0.30319.225<br />
Python 2.7.1 32bit<br />
Python 2.7.1 64bit<br />
Python 3.2.0 32bit<br />
Python 3.2.0 64bit<br />
Php 5.3.6 vc9 unsafe thread<br />
Lua 5.1.4 40<br />
C# 32bit on .NET 2.0.50727.4927<br />
C# 64bit on .NET 2.0.50727.4927<br />
C# 32bit on .NET 4.0.30319.1<br />
C# 64bit on .NET 4.0.30319.1</p>
<p>Solo python fornisce pacchetti di installazione x64 e ne ho approfittato per confrontarli con le versioni a 32 bit. Probabilmente le differenze si noteranno con operazioni matematiche rispetto la sezione IO ma questo apre la strada alla prossima comparazione.</p>
<p>La versione di ruby 1.8.6 è una mingw32 e non mswin32 come nel precedente test. <a href="http://www.ironruby.net/">IronRuby</a> invece è l&#8217;ultima 1.1.3 che abbraccia il supporto a ruby 1.9.2 e non 1.8.6 come la versione del precedente test con cui, comunque, condivide lo stesso framework .net e la stessa sezione IO.<br />
Questa volta ho anche aggiunto C# nella comparazione, ho compilato quattro versioni differenziando per piattaforma, x86 e x64, ed anche per framework, 3.5 e 4. Il framework .net 3.5 utilizza lo stesso <a href="http://it.wikipedia.org/wiki/Common_Language_Runtime">CLR</a> del 2.0. </p>
<p>Una nota di merito a IronRuby, il primo della classe che è persino davanti a C#, linguaggio compilato e con cui condivide molto. E&#8217; vero che questo test non richiede potenza computazionale particolarmente elevata ma è certamente un risultato curioso.</p>
<p>Un riepilogo anche sul consumo della memoria:</p>
<table>
<tr>
<td>Lua 5.1.4</td>
<td><b>0,7mb</b></td>
</tr>
<tr>
<td>Php 5.3.6</td>
<td>2,2mb</td>
</tr>
<tr>
<td>Python 2.7.1 32bit</td>
<td>2,5mb</td>
</tr>
<tr>
<td>Python 3.2.0 32bit</td>
<td>3,7mb</td>
</tr>
<tr>
<td>Python 2.7.1 64bit</td>
<td>4mb</td>
</tr>
<tr>
<td>Python 3.2.0 64bit</td>
<td>5,5mb</td>
</tr>
<tr>
<td>Ruby 1.9.2p180</td>
<td>4-6mb</td>
</tr>
<tr>
<td>Ruby 1.8.6p383</td>
<td>4-9mb</td>
</tr>
<tr>
<td>Ruby 1.8.7p334</td>
<td>4-9mb</td>
</tr>
<tr>
<td>C# 32bit on .NET 2.0.50727.4927</td>
<td>7mb</td>
</tr>
<tr>
<td>C# 32bit on .NET 4.0.30319.1</td>
<td>7mb</td>
</tr>
<tr>
<td>C# 64bit on .NET 2.0.50727.4927</td>
<td>9mb</td>
</tr>
<tr>
<td>C# 64bit on .NET 4.0.30319.1</td>
<td>9mb</td>
</tr>
<tr>
<td>IronRuby 1.1.3.0 on .NET 4.0.30319.225</td>
<td>11mb</td>
</tr>
<tr>
<td>jruby 1.6.1 (JVM 64-Bit Server 1.6.0_23)</td>
<td>jruby 1mb + java 200mb</td>
</tr>
</table>
<p><img src="http://i.imgur.com/np8SWl.jpg" alt="" title="2,6 Gb" /></p>
<p><img src="http://i.imgur.com/obUkdl.jpg" alt="" title="880 Mb" /></p>
<p><img src="http://i.imgur.com/FTWtFl.jpg" alt="" title="330 Mb" /></p>
<p><img src="http://i.imgur.com/Wv6f2l.jpg" alt="" title="Totale" /></p>
<p>Questo è il codice C# che ho compilato con Visual Studio 2010:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.IO</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF; font-weight: bold;">namespace</span> Split
<span style="color: #008000;">&#123;</span>
    <span style="color: #6666cc; font-weight: bold;">class</span> Program
    <span style="color: #008000;">&#123;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">/// &lt;summary&gt;</span>
        <span style="color: #008080; font-style: italic;">/// To split a file into n output files</span>
        <span style="color: #008080; font-style: italic;">/// &lt;/summary&gt;</span>
        <span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;args&quot;&gt;Filename and records number to split&lt;/param&gt;</span>
        <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">void</span> Main<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> args<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #6666cc; font-weight: bold;">string</span> strInput <span style="color: #008000;">=</span> args<span style="color: #008000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">;</span>
            <span style="color: #6666cc; font-weight: bold;">string</span> strOutput <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;out_{0:000}.txt&quot;</span><span style="color: #008000;">;</span>
            Int32 nrec_to_split <span style="color: #008000;">=</span> Convert<span style="color: #008000;">.</span><span style="color: #0000FF;">ToInt32</span><span style="color: #008000;">&#40;</span>args<span style="color: #008000;">&#91;</span><span style="color: #FF0000;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            DateTime t1 <span style="color: #008000;">=</span> DateTime<span style="color: #008000;">.</span><span style="color: #0000FF;">Now</span><span style="color: #008000;">;</span>
            Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;C# {1} Started at {0:R}, please wait...&quot;</span>, t1, <span style="color: #000000;">System</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Environment</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Version</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
&nbsp;
            StreamReader sr<span style="color: #008000;">;</span>
            StreamWriter sw <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span>
            sr <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> StreamReader<span style="color: #008000;">&#40;</span>strInput<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            Int16 nsplit <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
            Int64 nrec <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">while</span> <span style="color: #008000;">&#40;</span>sr<span style="color: #008000;">.</span><span style="color: #0000FF;">Peek</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&gt;=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>nrec <span style="color: #008000;">%</span> nrec_to_split <span style="color: #008000;">==</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    <span style="color: #008000;">++</span>nsplit<span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>sw <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span> sw<span style="color: #008000;">.</span><span style="color: #0000FF;">Close</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                    sw <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> StreamWriter<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">String</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Format</span><span style="color: #008000;">&#40;</span>strOutput, nsplit<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                <span style="color: #008000;">&#125;</span>
                sw<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span>sr<span style="color: #008000;">.</span><span style="color: #0000FF;">ReadLine</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                <span style="color: #008000;">++</span>nrec<span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
&nbsp;
            Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Ended at {0:R}, please wait...&quot;</span>, DateTime<span style="color: #008000;">.</span><span style="color: #0000FF;">Now</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Elapsed time {0}&quot;</span>, DateTime<span style="color: #008000;">.</span><span style="color: #0000FF;">Now</span> <span style="color: #008000;">-</span> t1<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://mastrodonato.info/index.php/2011/04/files-grandi-dimensioni-windows-server-2008-r2-64bit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby, Python, Php e Lua in comparazione con files di grandi dimensioni</title>
		<link>http://mastrodonato.info/index.php/2011/04/ruby-python-php-lua-comparazione-files-grandi-dimensioni/</link>
		<comments>http://mastrodonato.info/index.php/2011/04/ruby-python-php-lua-comparazione-files-grandi-dimensioni/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 08:55:44 +0000</pubDate>
		<dc:creator>Marco Mastrodonato</dc:creator>
				<category><![CDATA[IronRuby .NET]]></category>
		<category><![CDATA[JRuby]]></category>
		<category><![CDATA[Prestazioni]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Benchmark]]></category>
		<category><![CDATA[IronRuby]]></category>
		<category><![CDATA[jRuby]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://mastrodonato.info/?p=653</guid>
		<description><![CDATA[Vediamo come si comporta la sezione IO di alcuni tra i più popolari linguaggi script. L&#8217;esercizio consiste nel leggere sequenzialmente un grosso file di input e dividerlo in files più piccoli, in termini pratici, splittarlo. I linguaggi in esame sono: Ruby 1.8.6 p287 (2008-08-11) [i386-mswin32] Ruby 1.8.7 p334 (2011-02-18) [i386-mingw32] Ruby 1.9.2 p180 (2011-02-18) [i386-mingw32] [...]]]></description>
			<content:encoded><![CDATA[<p>Vediamo come si comporta la sezione IO di alcuni tra i più popolari linguaggi script. L&#8217;esercizio consiste nel leggere sequenzialmente un grosso file di input e dividerlo in files più piccoli, in termini pratici, splittarlo.</p>
<p>I linguaggi in esame sono:<br />
Ruby 1.8.6 p287 (2008-08-11) [i386-mswin32]<br />
Ruby 1.8.7 p334 (2011-02-18) [i386-mingw32]<br />
Ruby 1.9.2 p180  (2011-02-18) [i386-mingw32]<br />
jruby 1.5.1 (ruby 1.8.7 patch 249) (Java HotSpot(TM) Client VM 1.6.0_14) [x86-java]<br />
jruby 1.5.1 (ruby 1.8.7 patch 249) (Java HotSpot(TM) Client VM 1.6.0_24) [x86-java]<br />
jruby 1.6.1 (ruby-1.8.7-p330) (Java HotSpot(TM) Client VM 1.6.0_24) [Windows XP-x86-java]<br />
IronRuby 1.1.0.0 on .NET 4.0.30319.225<br />
Python 2.6.2<br />
Python 2.7.1<br />
Python 3.2.0<br />
Php 5.3.6 vc9 unsafe thread<br />
Lua 5.1.4 40</p>
<p>Iniziamo col creare i tre files di input necessari per il test:<br />
ruby new.rb input1.txt 185000 1799  => 330Mb<br />
ruby new.rb input2.txt 500000 1799  => 880Mb<br />
ruby new.rb input3.txt 1500000 1799 => 2,6Gb</p>
<p>Il test l&#8217;ho eseguito su un PC con cpu Intel E7300 Core2 Duo 2,66Ghz Ram 3,25Gb con Windows XP Professional 32bit, Hard Disk ST3250310AS Barracuda 7200.10 SATA 3.0Gb/s da 250Gb.</p>
<p>Prossimamente lo eseguirò anche su un Server Windows 2008 R2 64bit su VMWare Xeon X7460 Dual Core a 2,66Ghz e 2Gb di ram con dischi SCSI.</p>
<p>Prima e dopo aver creato i tre files di input ho deframmentato il disco. Se i tempi sono incostanti significa che il disco deve essere deframmentato o c&#8217;è qualcosa che rallenta il sistema come ad esempio l&#8217;antivirus che deve essere disabilitato.</p>
<p>Per ogni file ho eseguito sei elaborazioni e considerando le scarse prestazioni IO del sistema, ho scartato le tre peggiori. Naturalmente, prima di ogni test ho eliminato i files di output. </p>
<p>I grafici parlano da soli.<br />
L&#8217;unico commento che posso fare riguarda la versione 1.9.2 di ruby che ha evidenti problemi di IO e questi risultati non sono in linea con le performance generali di questo linguaggio che, come ho potuto rilevare da altri precedenti test, sono invece molto buone.</p>
<p><img src="http://i.imgur.com/48pyUl.jpg" alt="" title="2,6 Gb" /></p>
<p><img src="http://i.imgur.com/6xHd7l.jpg" alt="" title="880 Mb" /></p>
<p><img src="http://i.imgur.com/2leKpl.jpg" alt="" title="330 Mb" /></p>
<p><img src="http://i.imgur.com/Grrgjl.jpg" alt="" title="All three files" /></p>
<p>Questi sono gli script che ho scritto per l&#8217;occasione:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># Written by Marco Mastrodonato on 19/04/2011</span>
<span style="color:#008000; font-style:italic;"># Script to split a file into n output files</span>
<span style="color:#008000; font-style:italic;"># Example:</span>
<span style="color:#008000; font-style:italic;"># ruby split.rb par1 par2</span>
<span style="color:#008000; font-style:italic;"># par1 =&gt; name [default =&gt; input1.txt]</span>
<span style="color:#008000; font-style:italic;"># par2 =&gt; record number that determines the number of output files [default =&gt; 1650]</span>
&nbsp;
strinput = ARGV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">||</span> <span style="color:#996600;">'input1.txt'</span>
nrec_to_split = ARGV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span> ? ARGV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">to_i</span> : <span style="color:#006666;">1650</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">unless</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">exists</span>? strinput
	<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;File #{strinput} doesn't exists!&quot;</span> 
	<span style="color:#CC0066; font-weight:bold;">exit</span> <span style="color:#006666;">1</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
stroutput = <span style="color:#996600;">&quot;out_%03d.txt&quot;</span>
&nbsp;
t1= <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Ruby #{RUBY_VERSION} #{strinput} started at #{t1}, wait please...&quot;</span>
&nbsp;
<span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>strinput, <span style="color:#996600;">&quot;r&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>f<span style="color:#006600; font-weight:bold;">|</span>
	nsplit = <span style="color:#006666;">0</span>
	nrec = <span style="color:#006666;">0</span>
	fileoutput = <span style="color:#0000FF; font-weight:bold;">nil</span>
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">while</span> line = f.<span style="color:#CC0066; font-weight:bold;">gets</span>
		<span style="color:#9966CC; font-weight:bold;">if</span> nrec <span style="color:#006600; font-weight:bold;">%</span> nrec_to_split == <span style="color:#006666;">0</span>
			nsplit <span style="color:#006600; font-weight:bold;">+</span>= <span style="color:#006666;">1</span>
			fileoutput.<span style="color:#9900CC;">close</span> <span style="color:#9966CC; font-weight:bold;">if</span> fileoutput
			fileoutput = <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>stroutput <span style="color:#006600; font-weight:bold;">%</span> nsplit, <span style="color:#996600;">'w'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
		<span style="color:#9966CC; font-weight:bold;">end</span>
		fileoutput.<span style="color:#9900CC;">write</span> line
		nrec <span style="color:#006600; font-weight:bold;">+</span>= <span style="color:#006666;">1</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
	fileoutput.<span style="color:#9900CC;">close</span> <span style="color:#9966CC; font-weight:bold;">if</span> fileoutput
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Ended at #{Time.now}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Elapsed time #{Time.now - t1}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">exit</span> <span style="color:#006666;">0</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># Written by Marco Mastrodonato on 19/04/2011</span>
<span style="color: #808080; font-style: italic;"># Script to split a file into n output files</span>
<span style="color: #808080; font-style: italic;"># Example:</span>
<span style="color: #808080; font-style: italic;"># python split.py par1 par2</span>
<span style="color: #808080; font-style: italic;"># par1 =&gt; name [default =&gt; input1.txt]</span>
<span style="color: #808080; font-style: italic;"># par2 =&gt; record number that determines the number of output files [default =&gt; 1650]</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">time</span> <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">time</span>, gmtime, strftime
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">try</span>:
	strinput = <span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">except</span>:
	strinput = <span style="color: #483d8b;">'input1.txt'</span>
&nbsp;
stroutput = <span style="color: #483d8b;">&quot;out_%03d.txt&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">try</span>:
	nrec_to_split = <span style="color: #008000;">int</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">except</span>:
	nrec_to_split = <span style="color: #ff4500;">1650</span>
&nbsp;
t1 = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">version</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span>strftime<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Started at %a, %d %b %Y %H:%M:%S +0000, wait please...&quot;</span>, gmtime<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
nrec = <span style="color: #ff4500;">0</span>
nsplit = <span style="color: #ff4500;">0</span>
&nbsp;
<span style="color: #dc143c;">fileinput</span> = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span>strinput, <span style="color: #483d8b;">&quot;r&quot;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">for</span> line <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #dc143c;">fileinput</span>:
	<span style="color: #ff7700;font-weight:bold;">if</span> nrec <span style="color: #66cc66;">%</span> nrec_to_split == <span style="color: #ff4500;">0</span>:
		<span style="color: #ff7700;font-weight:bold;">try</span>:
			fileoutput.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">NameError</span>:
			fileoutput = <span style="color: #008000;">None</span>
		nsplit += <span style="color: #ff4500;">1</span>
		fileoutput = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span>stroutput <span style="color: #66cc66;">%</span>nsplit , <span style="color: #483d8b;">&quot;w&quot;</span><span style="color: black;">&#41;</span>
	fileoutput.<span style="color: black;">write</span><span style="color: black;">&#40;</span>line<span style="color: black;">&#41;</span>
	nrec += <span style="color: #ff4500;">1</span>    
fileoutput.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #dc143c;">fileinput</span>.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span>strftime<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Ended at %a, %d %b %Y %H:%M:%S +0000&quot;</span>, gmtime<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Elapsed time %f&quot;</span> <span style="color: #66cc66;">%</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - t1<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">// Written by Marco Mastrodonato on 19/04/2011</span>
<span style="color: #666666; font-style: italic;">// Script to split a file into n output files</span>
<span style="color: #666666; font-style: italic;">// Example:</span>
<span style="color: #666666; font-style: italic;">// php split.php par1 par2</span>
<span style="color: #666666; font-style: italic;">// par1 =&gt; name [default =&gt; input1.txt]</span>
<span style="color: #666666; font-style: italic;">// par2 =&gt; record number that determines the number of output files [default =&gt; 1650]</span>
&nbsp;
<span style="color: #000088;">$strinput</span> <span style="color: #339933;">=</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$argv</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #000088;">$argv</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">'input1.txt'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$nrec_to_split</span> <span style="color: #339933;">=</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$argv</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #000088;">$argv</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">:</span> <span style="color: #cc66cc;">1650</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$stroutput</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'out_%03d.txt'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$t1</span> <span style="color: #339933;">=</span> microtime_float<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Php &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">phpversion</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; started at &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'D, d M Y H:i:s T'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;, wait please...<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$nsplit</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$nrec</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$fileinput</span><span style="color: #339933;">=</span><span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$strinput</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;r&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">feof</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fileinput</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$nrec</span> <span style="color: #339933;">%</span> <span style="color: #000088;">$nrec_to_split</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #339933;">++</span><span style="color: #000088;">$nsplit</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fileoutput</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fileoutput</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$fileoutput</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">sprintf</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$stroutput</span><span style="color: #339933;">,</span> <span style="color: #000088;">$nsplit</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'w'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000088;">$buffer</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fgets</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fileinput</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">fwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fileoutput</span><span style="color: #339933;">,</span> <span style="color: #000088;">$buffer</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #339933;">++</span><span style="color: #000088;">$nrec</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #990000;">fclose</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$fileinput</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Ended at &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'D, d M Y H:i:s T'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span> 
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Elapsed time &quot;</span><span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span>microtime_float<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$t1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> microtime_float<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$usec</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sec</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">microtime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>float<span style="color: #009900;">&#41;</span><span style="color: #000088;">$usec</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>float<span style="color: #009900;">&#41;</span><span style="color: #000088;">$sec</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="lua" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">--[[
Written by Marco Mastrodonato on 19/04/2011
Script to split a file into n output files
Example:
lua split.lua par1 par2
par1 =&gt; name [default =&gt; input1.txt]
par2 =&gt; record number that determines the number of output files [default =&gt; 1650]
--]]</span>
strinput <span style="color: #66cc66;">=</span> arg <span style="color: #b1b100;">and</span> arg<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> <span style="color: #b1b100;">or</span> <span style="color: #ff0000;">&quot;input1.txt&quot;</span>
stroutput <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;out_%03d.txt&quot;</span>
nrec_to_split <span style="color: #66cc66;">=</span> arg <span style="color: #b1b100;">and</span> arg<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#93;</span> <span style="color: #b1b100;">and</span> <span style="color: #b1b100;">tonumber</span><span style="color: #66cc66;">&#40;</span>arg<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">or</span> <span style="color: #cc66cc;">1650</span>
&nbsp;
<span style="color: #b1b100;">local</span> t1 <span style="color: #66cc66;">=</span> <span style="color: #b1b100;">os.clock</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">print</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">_VERSION</span> .. <span style="color: #ff0000;">&quot; started at &quot;</span> .. <span style="color: #b1b100;">os.date</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;%a, %d %b %Y %H:%M:%S +0000&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
nsplit <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span>
nrec <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span>
<span style="color: #b1b100;">for</span> line <span style="color: #b1b100;">in</span> <span style="color: #b1b100;">io.lines</span><span style="color: #66cc66;">&#40;</span>strinput<span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">do</span>
  <span style="color: #b1b100;">if</span> nrec <span style="color: #66cc66;">%</span> nrec_to_split <span style="color: #66cc66;">==</span> <span style="color: #cc66cc;">0</span> <span style="color: #b1b100;">then</span>
    <span style="color: #b1b100;">if</span> fileOut ~<span style="color: #66cc66;">=</span> <span style="color: #b1b100;">nil</span> <span style="color: #b1b100;">then</span> <span style="color: #b1b100;">io.close</span><span style="color: #66cc66;">&#40;</span>fileOut<span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">end</span>
    nsplit <span style="color: #66cc66;">=</span> nsplit + <span style="color: #cc66cc;">1</span>
    fileOut <span style="color: #66cc66;">=</span> <span style="color: #b1b100;">io.open</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">string.format</span><span style="color: #66cc66;">&#40;</span>stroutput, nsplit<span style="color: #66cc66;">&#41;</span> , <span style="color: #ff0000;">'w'</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #b1b100;">end</span>
  fileOut:<span style="color: #b1b100;">write</span> <span style="color: #66cc66;">&#40;</span>line .. <span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: #66cc66;">&#41;</span>
  nrec <span style="color: #66cc66;">=</span> nrec + <span style="color: #cc66cc;">1</span>
<span style="color: #b1b100;">end</span>
&nbsp;
<span style="color: #b1b100;">io.close</span><span style="color: #66cc66;">&#40;</span>fileOut<span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #b1b100;">print</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Ended at &quot;</span> .. <span style="color: #b1b100;">os.date</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;%a, %d %b %Y %H:%M:%S +0000&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">print</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">string.format</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Elapsed time: %.2f<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, <span style="color: #b1b100;">os.clock</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - t1<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>Per creare i files ho usato questo semplice script ruby:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># Example:</span>
<span style="color:#008000; font-style:italic;"># ruby new.rb [NOME] [LINES] [RECORD SIZE]</span>
&nbsp;
stroutput = ARGV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">||</span> <span style="color:#996600;">'input1.txt'</span>
num = ARGV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span> ? ARGV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">to_i</span> : <span style="color:#006666;">185000</span>
size = ARGV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">2</span><span style="color:#006600; font-weight:bold;">&#93;</span> ? ARGV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">2</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">to_i</span> : <span style="color:#006666;">1799</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">exists</span>? stroutput
	<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;File #{stroutput} already exists!&quot;</span> 
	<span style="color:#CC0066; font-weight:bold;">exit</span> <span style="color:#006666;">1</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
t1= <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Ruby #{RUBY_VERSION} #{stroutput} started at #{t1}, wait please...&quot;</span>
&nbsp;
line = <span style="color:#996600;">&quot;*&quot;</span> <span style="color:#006600; font-weight:bold;">*</span> size
&nbsp;
<span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>stroutput, <span style="color:#996600;">&quot;w&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>f<span style="color:#006600; font-weight:bold;">|</span>
	num.<span style="color:#9900CC;">times</span> <span style="color:#9966CC; font-weight:bold;">do</span>
		f.<span style="color:#CC0066; font-weight:bold;">puts</span> line
	<span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Ended at #{Time.now}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Elapsed time #{Time.now - t1}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">exit</span> <span style="color:#006666;">0</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://mastrodonato.info/index.php/2011/04/ruby-python-php-lua-comparazione-files-grandi-dimensioni/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ruby vs Python vs Windows vs Linux</title>
		<link>http://mastrodonato.info/index.php/2010/03/ruby-vs-python-vs-windows-vs-linux/</link>
		<comments>http://mastrodonato.info/index.php/2010/03/ruby-vs-python-vs-windows-vs-linux/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 22:33:00 +0000</pubDate>
		<dc:creator>Marco Mastrodonato</dc:creator>
				<category><![CDATA[IronRuby .NET]]></category>
		<category><![CDATA[JRuby]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Benchmark]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://mastrodonato.info/?p=432</guid>
		<description><![CDATA[Nel precedente articolo, ho esaminato le prestazioni di alcuni interpreti ruby e python, su un sistema windows xp. Questa volta, ho eseguito gli stessi script sotto linux: distribuzione ubuntu 9.10 2.6.31-20-generic. Le versioni APT sono state installate tramite gestore di pacchetti, le RVM invece, tramite il Ruby Version Manager e compilate dai sorgenti. Versione Compilatore/Sistema/VM [...]]]></description>
			<content:encoded><![CDATA[<p>Nel <a href="http://mastrodonato.info/index.php/2010/01/ruby-vs-ruby-vs-python-vs-python/">precedente articolo</a>, ho esaminato le prestazioni di alcuni interpreti ruby e python, su un sistema windows xp. Questa volta, ho eseguito gli stessi script sotto linux: distribuzione ubuntu 9.10 2.6.31-20-generic. Le versioni APT sono state installate tramite gestore di pacchetti, le RVM invece, tramite il <a href="http://rvm.beginrescueend.com/">Ruby Version Manager</a> e compilate dai sorgenti.</p>
<p><center></p>
<table>
<th>Versione</th>
<th>Compilatore/Sistema/VM</th>
<th>Secondi</th>
<tbody>
<tr>
<td>JRuby 1.4.0 APT</td>
<td> Java HotSpot(TM) 64-Bit Server VM 1.6.0_16) [amd64-java]</td>
<td><strong>6,1</strong></td>
</tr>
<tr>
<td>JRuby 1.4.0 RVM</td>
<td> Java HotSpot(TM) 64-Bit Server VM 1.6.0_16) [amd64-java]</td>
<td><strong>6,2</strong></td>
</tr>
<tr>
<td>Ruby 1.9.2 preview1 RVM</td>
<td>x86_64-linux</td>
<td><strong>6,5</strong></td>
</tr>
<tr>
<td>JRuby 1.4.0 </td>
<td>Windows Client VM 1.6.0_15 [x86-java]</td>
<td><strong>6,9</strong></td>
</tr>
<tr>
<td>Python 2.6.4</td>
<td>Windows</td>
<td>7,5</td>
</tr>
<tr>
<td>Ruby 1.9.1 p129</td>
<td>i386-mingw32</td>
<td>8,1</td>
</tr>
<tr>
<td>Python 2.6.4 APT</td>
<td>x86_64-linux</td>
<td>8,7</td>
</tr>
<tr>
<td>Ruby 1.9.1 p378 RVM</td>
<td>x86_64-linux</td>
<td>8,7</td>
</tr>
<tr>
<td>Ruby 1.9.1 p243 RVM</td>
<td>x86_64-linux</td>
<td>8,8</td>
</tr>
<tr>
<td>Python 3.1.1</td>
<td>Windows</td>
<td>9,0</td>
</tr>
<tr>
<td>Ruby 1.9.1 p243 APT</td>
<td>x86_64-linux</td>
<td>9,3</td>
</tr>
<tr>
<td>Ruby 1.9.1 p243</td>
<td>i386-mingw32</td>
<td>9,6</td>
</tr>
<tr>
<td>Ruby 1.8.7 p249 RVM</td>
<td>x86_64-linux</td>
<td>12,2</td>
</tr>
<tr>
<td>IronRuby 0.9.3.0</td>
<td>Windows .NET 2.0.0.0</td>
<td>18,9</td>
</tr>
<tr>
<td>Ruby 1.9.1 p376</td>
<td>i386-mswin32</td>
<td>20,8</td>
</tr>
<tr>
<td>Ruby 1.8.7 p174 APT</td>
<td>x86_64-linux</td>
<td>23,0</td>
</tr>
<tr>
<td>Ruby 1.8.6 p368</td>
<td>i386-mingw32</td>
<td>23,3</td>
</tr>
<tr>
<td>Ruby 1.8.7 p249</td>
<td>i386-mingw32</td>
<td>23,9</td>
</tr>
<tr>
<td>IronPython 2.6</td>
<td>Windows .NET 2.0.0.0</td>
<td>256,5</td>
</tr>
<tr>
<td>Jython 2.5.1</td>
<td>Windows Client VM 1.6.0_15 [x86-java]</td>
<td><em>Timeout</em></td>
</tr>
</tbody>
</table>
<p></center></p>
<div id="attachment_433" class="wp-caption aligncenter" style="width: 310px"><a href="http://mastrodonato.info/wp-content/uploads/2010/03/WinVsLinux.png"><img src="http://mastrodonato.info/wp-content/uploads/2010/03/WinVsLinux-300x173.png" alt="Win vs Linux" title="WinVsLinux" width="300" height="173" class="size-medium wp-image-433" /></a><p class="wp-caption-text">Win vs Linux</p></div>
]]></content:encoded>
			<wfw:commentRss>http://mastrodonato.info/index.php/2010/03/ruby-vs-python-vs-windows-vs-linux/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ruby vs Ruby vs Python vs Python</title>
		<link>http://mastrodonato.info/index.php/2010/01/ruby-vs-ruby-vs-python-vs-python/</link>
		<comments>http://mastrodonato.info/index.php/2010/01/ruby-vs-ruby-vs-python-vs-python/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 22:23:55 +0000</pubDate>
		<dc:creator>Marco Mastrodonato</dc:creator>
				<category><![CDATA[IronRuby .NET]]></category>
		<category><![CDATA[JRuby]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Benchmark]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://mastrodonato.info/?p=388</guid>
		<description><![CDATA[Un altro benchmark che mette a confronto alcune recenti versioni di ruby con gli ultimi rilasci di python. Due semplici script per confrontare sintassi e prestazioni di questi moderni linguaggi. Il sistema su cui ho eseguito la prova è un portatile Dell Inspiron 9400 con Centrino Duo, Intel T7200 4Mb Cache 2Ghz, Ram 2Gb 667Mhz. [...]]]></description>
			<content:encoded><![CDATA[<p>Un altro benchmark che mette a confronto alcune recenti versioni di ruby con gli ultimi rilasci di python. Due semplici script per confrontare sintassi e prestazioni di questi moderni linguaggi.<br />
Il sistema su cui ho eseguito la prova è un portatile Dell Inspiron 9400 con Centrino Duo, Intel T7200 4Mb Cache 2Ghz, Ram 2Gb 667Mhz. Sistema operativo Windows XP pro SP3.</p>
<p>Questo è il risultato del primo test, usato come riscaldamento per le vm:</p>
<p><center></p>
<table>
<th>Versione</th>
<th>Compilatore</th>
<th>Secondi</th>
<tbody>
<tr>
<td>Python 2.6.4</td>
<td></td>
<td><strong>7,5</strong></td>
</tr>
<tr>
<td>Ruby 1.9.1 p129</td>
<td>i386-mingw32</td>
<td>8,2</td>
</tr>
<tr>
<td>JRuby 1.4.0 </td>
<td>Client VM 1.6.0_15 [x86-java]</td>
<td>9,0</td>
</tr>
<tr>
<td>Python 3.1.1</td>
<td></td>
<td>9,1</td>
</tr>
<tr>
<td>Ruby 1.9.1 p243</td>
<td>i386-mingw32</td>
<td>9,6</td>
</tr>
<tr>
<td>IronRuby 0.9.3.0</td>
<td>.NET 2.0.0.0</td>
<td>20,3</td>
</tr>
<tr>
<td>Ruby 1.9.1 p376</td>
<td>i386-mswin32</td>
<td>20,9</td>
</tr>
<tr>
<td>Ruby 1.8.6 p368</td>
<td>i386-mingw32</td>
<td>22,9</td>
</tr>
<tr>
<td>IronPython 2.6</td>
<td>.NET 2.0.0.0</td>
<td>225,4</td>
</tr>
<tr>
<td>Jython 2.5.1</td>
<td>Client VM 1.6.0_15 [x86-java]</td>
<td><em>Timeout</em></td>
</tr>
</tbody>
</table>
<p></center></p>
<div id="attachment_397" class="wp-caption aligncenter" style="width: 310px"><a href="http://mastrodonato.info/wp-content/uploads/2010/01/BenchMM1s.PNG"><img src="http://mastrodonato.info/wp-content/uploads/2010/01/BenchMM1s-300x121.PNG" alt="Benchmark senza warm up" title="Bench MM1" width="300" height="121" class="size-medium wp-image-397" /></a><p class="wp-caption-text">Benchmark senza warm up</p></div>
<p>Il risultato che segue invece, si riferisce alla media delle tre rilevazioni successive al riscaldamento. Le prestazioni di JRuby migliorano del 23%:</p>
<p><center></p>
<table>
<th>Versione</th>
<th>Compilatore</th>
<th>Secondi</th>
<tbody>
<tr>
<td>JRuby 1.4.0 </td>
<td>Client VM 1.6.0_15 [x86-java]</td>
<td><strong>6,9</strong></td>
</tr>
<tr>
<td>Python 2.6.4</td>
<td></td>
<td>7,5</td>
</tr>
<tr>
<td>Ruby 1.9.1 p129</td>
<td>i386-mingw32</td>
<td>8,2</td>
</tr>
<tr>
<td>Python 3.1.1</td>
<td></td>
<td>9,0</td>
</tr>
<tr>
<td>Ruby 1.9.1 p243</td>
<td>i386-mingw32</td>
<td>10,0</td>
</tr>
<tr>
<td>IronRuby 0.9.3.0</td>
<td>.NET 2.0.0.0</td>
<td>18,9</td>
</tr>
<tr>
<td>Ruby 1.9.1 p376</td>
<td>i386-mswin32</td>
<td>20,6</td>
</tr>
<tr>
<td>Ruby 1.8.6 p368</td>
<td>i386-mingw32</td>
<td>23,2</td>
</tr>
<tr>
<td>IronPython 2.6</td>
<td>.NET 2.0.0.0</td>
<td>256,5</td>
</tr>
<tr>
<td>Jython 2.5.1</td>
<td>Client VM 1.6.0_15 [x86-java]</td>
<td><em>Timeout</em></td>
</tr>
</tbody>
</table>
<p></center></p>
<div id="attachment_408" class="wp-caption aligncenter" style="width: 310px"><a href="http://mastrodonato.info/wp-content/uploads/2010/01/BenchMM1_warmup.PNG"><img src="http://mastrodonato.info/wp-content/uploads/2010/01/BenchMM1_warmup-300x121.PNG" alt="Rilevazioni dopo warm up" title="BenchMM1_warmup" width="300" height="121" class="size-medium wp-image-408" /></a><p class="wp-caption-text">Rilevazioni dopo warm up</p></div>
<p>Ed ecco gli script. Ho cercato di ottimizzare le rispettive versioni e per fare ciò, ho dovuto creare due varianti per ogni linguaggio. </p>
<p><strong>Ruby 1.8.6:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> strings_test<span style="color:#006600; font-weight:bold;">&#40;</span>ntest<span style="color:#006600; font-weight:bold;">&#41;</span>
  r1 = r2 = r3 = <span style="color:#006666;">0</span>
  xstr = <span style="color:#996600;">&quot;&quot;</span>
  ntest.<span style="color:#9900CC;">times</span> <span style="color:#9966CC; font-weight:bold;">do</span> 
    <span style="color:#008000; font-style:italic;">#Create a string, add 'abcde1234_' until getting a str size 1000</span>
    xstr = <span style="color:#996600;">'abcde1234_'</span> <span style="color:#006600; font-weight:bold;">*</span> <span style="color:#006666;">10000</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#Make letters upcase </span>
    xstr.<span style="color:#9900CC;">upcase</span>!
&nbsp;
    <span style="color:#008000; font-style:italic;">#Change '1234_' with '67890 ' (space at last position)</span>
    <span style="color:#008000; font-style:italic;">#Now the repeated string should be 'ABCDE67890 '</span>
    xstr.<span style="color:#CC0066; font-weight:bold;">gsub!</span> <span style="color:#996600;">'1234_'</span>, <span style="color:#996600;">'67890 '</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#Cast numbers from 29 upto size/2 to string and add it to xstr variable, ciclying for every number (not add all numbers one time)</span>
    <span style="color:#006666;">29</span>.<span style="color:#9900CC;">upto</span><span style="color:#006600; font-weight:bold;">&#40;</span>xstr.<span style="color:#9900CC;">size</span><span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">2</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>n<span style="color:#006600; font-weight:bold;">|</span> xstr <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> n.<span style="color:#9900CC;">to_s</span><span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#Check 1: Count 'A' char </span>
    <span style="color:#008000; font-style:italic;">#Check 2: Count '9' char </span>
    <span style="color:#006666;">0</span>.<span style="color:#9900CC;">upto</span><span style="color:#006600; font-weight:bold;">&#40;</span>xstr.<span style="color:#9900CC;">size</span><span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>n<span style="color:#006600; font-weight:bold;">|</span> 
      <span style="color:#9966CC; font-weight:bold;">if</span> xstr<span style="color:#006600; font-weight:bold;">&#91;</span>n<span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">chr</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color:#996600;">'A'</span>
        r1<span style="color:#006600; font-weight:bold;">+</span>=<span style="color:#006666;">1</span> 
      <span style="color:#9966CC; font-weight:bold;">elsif</span> xstr<span style="color:#006600; font-weight:bold;">&#91;</span>n<span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">chr</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color:#996600;">'9'</span>
        r2<span style="color:#006600; font-weight:bold;">+</span>=<span style="color:#006666;">1</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#Create an array from xstr using space to split</span>
    r3 <span style="color:#006600; font-weight:bold;">+</span>= xstr.<span style="color:#CC0066; font-weight:bold;">split</span>.<span style="color:#9900CC;">size</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#0000FF; font-weight:bold;">return</span> r1, r2, r3, xstr
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> arrays_test<span style="color:#006600; font-weight:bold;">&#40;</span>ntest, xstr<span style="color:#006600; font-weight:bold;">&#41;</span>
  r1 = r2 = r3 = r4 = r5 = <span style="color:#006666;">0</span>
  ntest.<span style="color:#9900CC;">times</span> <span style="color:#9966CC; font-weight:bold;">do</span> 
    <span style="color:#008000; font-style:italic;">#Clear ar then add 5000 times this element: &quot;I&quot;, &quot;am&quot;, &quot;great&quot;, null, &quot;or&quot;, &quot;number&quot;, 1</span>
    ar =  <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
    <span style="color:#006666;">5000</span>.<span style="color:#9900CC;">times</span> <span style="color:#9966CC; font-weight:bold;">do</span>
      <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'I'</span>, <span style="color:#996600;">'am'</span>, <span style="color:#996600;">'great'</span>, <span style="color:#0000FF; font-weight:bold;">nil</span>, <span style="color:#996600;">'or'</span>, <span style="color:#996600;">'number'</span>, <span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">each</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>a<span style="color:#006600; font-weight:bold;">|</span> ar <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> a<span style="color:#006600; font-weight:bold;">&#125;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#...then reverse elements to obtain this order: 1, &quot;number&quot;, &quot;or&quot;, null, &quot;great&quot;, &quot;am&quot;, &quot;I&quot;</span>
    ar.<span style="color:#9900CC;">reverse</span>!
&nbsp;
    <span style="color:#008000; font-style:italic;">#...then, count the element with value &quot;great&quot; using two separate cicle</span>
    <span style="color:#008000; font-style:italic;">#the first starting from 31 until 2955 (bounty inclused)</span>
    <span style="color:#006666;">31</span>.<span style="color:#9900CC;">upto</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">2955</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>n<span style="color:#006600; font-weight:bold;">|</span>
      r1 <span style="color:#006600; font-weight:bold;">+</span>= <span style="color:#006666;">1</span> <span style="color:#9966CC; font-weight:bold;">if</span> ar<span style="color:#006600; font-weight:bold;">&#91;</span>n<span style="color:#006600; font-weight:bold;">&#93;</span> == <span style="color:#996600;">'great'</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#008000; font-style:italic;">#the second looping all the array elements</span>
    ar.<span style="color:#9900CC;">each</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>n<span style="color:#006600; font-weight:bold;">|</span> r2<span style="color:#006600; font-weight:bold;">+</span>=<span style="color:#006666;">1</span> <span style="color:#9966CC; font-weight:bold;">if</span> n == <span style="color:#996600;">'great'</span><span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#Loop inside and build a temporary string with index and value, without put it into a variable and only for elements &lt;&gt; null</span>
    ar.<span style="color:#9900CC;">each_index</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>i<span style="color:#006600; font-weight:bold;">|</span> ar<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span> ? <span style="color:#996600;">&quot;#{i} #{ar[i]}&quot;</span> : r3<span style="color:#006600; font-weight:bold;">+</span>=<span style="color:#006666;">1</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#delete null value elements and take its size</span>
    ar.<span style="color:#9900CC;">compact</span>!
    r4 <span style="color:#006600; font-weight:bold;">+</span>= ar.<span style="color:#9900CC;">size</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#then join elements with space and take its size</span>
    r5 <span style="color:#006600; font-weight:bold;">+</span>= ar.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">' '</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">size</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#0000FF; font-weight:bold;">return</span> r1, r2, r3, r4, r5
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> nums_test<span style="color:#006600; font-weight:bold;">&#40;</span>ntest<span style="color:#006600; font-weight:bold;">&#41;</span>
  r1 = r2 = <span style="color:#006666;">0</span>
&nbsp;
  ntest.<span style="color:#9900CC;">times</span> <span style="color:#9966CC; font-weight:bold;">do</span> 
    <span style="color:#008000; font-style:italic;">#Find all prime numbers from 8 to 95 step by 3 and sum all primes got, to check the result</span>
    <span style="color:#008000; font-style:italic;">#51.upto(307) do |n| </span>
    <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">8</span>..<span style="color:#006666;">95</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">step</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>n<span style="color:#006600; font-weight:bold;">|</span>
      primes<span style="color:#006600; font-weight:bold;">&#40;</span>n<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">each</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>a<span style="color:#006600; font-weight:bold;">|</span> r1 <span style="color:#006600; font-weight:bold;">+</span>= a<span style="color:#006600; font-weight:bold;">&#125;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#Calculate factorial numbers start from 2 to 42</span>
    r2 = <span style="color:#006666;">0</span>
    <span style="color:#9966CC; font-weight:bold;">for</span> n <span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#006666;">2</span>..<span style="color:#006666;">42</span>
      r2 <span style="color:#006600; font-weight:bold;">+</span>= fac<span style="color:#006600; font-weight:bold;">&#40;</span>n<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#0000FF; font-weight:bold;">return</span> r1, r2
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#008000; font-style:italic;">#Primes must return an array of prime numbers</span>
<span style="color:#9966CC; font-weight:bold;">def</span> primes<span style="color:#006600; font-weight:bold;">&#40;</span>n<span style="color:#006600; font-weight:bold;">&#41;</span>
  ar = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
  <span style="color:#9966CC; font-weight:bold;">for</span> x <span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">2</span>..<span style="color:#9900CC;">n</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    prime = <span style="color:#0000FF; font-weight:bold;">true</span>
    <span style="color:#9966CC; font-weight:bold;">for</span> y <span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">2</span>..<span style="color:#9900CC;">x</span><span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#9966CC; font-weight:bold;">if</span> x<span style="color:#006600; font-weight:bold;">%</span>y == <span style="color:#006666;">0</span>
        prime = <span style="color:#0000FF; font-weight:bold;">false</span>
        <span style="color:#9966CC; font-weight:bold;">break</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
    ar <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> x <span style="color:#9966CC; font-weight:bold;">if</span> prime
  <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#0000FF; font-weight:bold;">return</span> ar
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> fac<span style="color:#006600; font-weight:bold;">&#40;</span>n<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">1</span>..<span style="color:#9900CC;">n</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">inject</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>total, current<span style="color:#006600; font-weight:bold;">|</span> total <span style="color:#006600; font-weight:bold;">*</span> current<span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># ---  START  ---</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>Warming up...&quot;</span>
t1=t2=t3=<span style="color:#006666;">0</span>
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2, r3, xstr = strings_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">5</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Strings test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p1=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check1: #{r1}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check2: #{r2}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check3: #{r3}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check4: #{xstr.size}&quot;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2, r3, r4, r5 = arrays_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">50</span>, xstr<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Arrays test  - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p2=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check1: #{r1}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check2: #{r2}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check3: #{r3}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check4: #{r4}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check5: #{r5}&quot;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2 = nums_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">500</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Numeric test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p3=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check1: #{r1}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check2: #{r2}&quot;</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Ruby Partial elapsed time %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p1<span style="color:#006600; font-weight:bold;">+</span>p2<span style="color:#006600; font-weight:bold;">+</span>p3<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>1. Starting Ruby tests...&quot;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2, r3, xstr = strings_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">5</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Strings test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p1=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2, r3, r4, r5 = arrays_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">50</span>, xstr<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Arrays test  - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p2=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2 = nums_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">500</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Numeric test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p3=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Ruby Partial elapsed time %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p1<span style="color:#006600; font-weight:bold;">+</span>p2<span style="color:#006600; font-weight:bold;">+</span>p3<span style="color:#006600; font-weight:bold;">&#41;</span>
t1<span style="color:#006600; font-weight:bold;">+</span>=p1;t2<span style="color:#006600; font-weight:bold;">+</span>=p2;t3<span style="color:#006600; font-weight:bold;">+</span>=p3
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>2. Starting Ruby tests...&quot;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2, r3, xstr = strings_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">5</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Strings test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p1=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2, r3, r4, r5 = arrays_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">50</span>, xstr<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Arrays test  - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p2=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2 = nums_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">500</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Numeric test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p3=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Ruby Partial elapsed time %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p1<span style="color:#006600; font-weight:bold;">+</span>p2<span style="color:#006600; font-weight:bold;">+</span>p3<span style="color:#006600; font-weight:bold;">&#41;</span>
t1<span style="color:#006600; font-weight:bold;">+</span>=p1;t2<span style="color:#006600; font-weight:bold;">+</span>=p2;t3<span style="color:#006600; font-weight:bold;">+</span>=p3
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>3. Starting Ruby tests...&quot;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2, r3, xstr = strings_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">5</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Strings test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p1=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2, r3, r4, r5 = arrays_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">50</span>, xstr<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Arrays test  - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p2=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2 = nums_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">500</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Numeric test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p3=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Ruby Partial elapsed time %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p1<span style="color:#006600; font-weight:bold;">+</span>p2<span style="color:#006600; font-weight:bold;">+</span>p3<span style="color:#006600; font-weight:bold;">&#41;</span>
t1<span style="color:#006600; font-weight:bold;">+</span>=p1;t2<span style="color:#006600; font-weight:bold;">+</span>=p2;t3<span style="color:#006600; font-weight:bold;">+</span>=p3
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;-------------------------------------&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Average Strings test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>t1<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Average Arrays test  - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>t2<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Average Numeric test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>t3<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>Ruby Average elapsed time %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>t1<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">+</span>t2<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">+</span>t3<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p><strong>Ruby 1.9.1:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> strings_test<span style="color:#006600; font-weight:bold;">&#40;</span>ntest<span style="color:#006600; font-weight:bold;">&#41;</span>
  r1 = r2 = r3 = <span style="color:#006666;">0</span>
  xstr = <span style="color:#996600;">&quot;&quot;</span>
  ntest.<span style="color:#9900CC;">times</span> <span style="color:#9966CC; font-weight:bold;">do</span> 
    <span style="color:#008000; font-style:italic;">#Create a string, add 'abcde1234_' until getting a str size 1000</span>
    xstr = <span style="color:#996600;">'abcde1234_'</span> <span style="color:#006600; font-weight:bold;">*</span> <span style="color:#006666;">10000</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#Make letters upcase </span>
    xstr.<span style="color:#9900CC;">upcase</span>!
&nbsp;
    <span style="color:#008000; font-style:italic;">#Change '1234_' with '67890 ' (space at last position)</span>
    <span style="color:#008000; font-style:italic;">#Now the repeated string should be 'ABCDE67890 '</span>
    xstr.<span style="color:#CC0066; font-weight:bold;">gsub!</span> <span style="color:#996600;">'1234_'</span>, <span style="color:#996600;">'67890 '</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#Cast numbers to string, from 29 up to size/2. Add it to xstr variable as well, ciclying for every number (not adding all numbers once)</span>
    <span style="color:#006666;">29</span>.<span style="color:#9900CC;">upto</span><span style="color:#006600; font-weight:bold;">&#40;</span>xstr.<span style="color:#9900CC;">size</span><span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">2</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>n<span style="color:#006600; font-weight:bold;">|</span> xstr <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> n.<span style="color:#9900CC;">to_s</span><span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#Check 1: Count 'A' char </span>
    <span style="color:#008000; font-style:italic;">#Check 2: Count '9' char </span>
    <span style="color:#006666;">0</span>.<span style="color:#9900CC;">upto</span><span style="color:#006600; font-weight:bold;">&#40;</span>xstr.<span style="color:#9900CC;">size</span><span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>n<span style="color:#006600; font-weight:bold;">|</span> 
      <span style="color:#9966CC; font-weight:bold;">if</span> xstr<span style="color:#006600; font-weight:bold;">&#91;</span>n<span style="color:#006600; font-weight:bold;">&#93;</span> == <span style="color:#996600;">'A'</span>
        r1<span style="color:#006600; font-weight:bold;">+</span>=<span style="color:#006666;">1</span> 
      <span style="color:#9966CC; font-weight:bold;">elsif</span> xstr<span style="color:#006600; font-weight:bold;">&#91;</span>n<span style="color:#006600; font-weight:bold;">&#93;</span> == <span style="color:#996600;">'9'</span>
        r2<span style="color:#006600; font-weight:bold;">+</span>=<span style="color:#006666;">1</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#Create an array from xstr using space to split, its size is the third check</span>
    r3 <span style="color:#006600; font-weight:bold;">+</span>= xstr.<span style="color:#CC0066; font-weight:bold;">split</span>.<span style="color:#9900CC;">size</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#0000FF; font-weight:bold;">return</span> r1, r2, r3, xstr
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> arrays_test<span style="color:#006600; font-weight:bold;">&#40;</span>ntest, xstr<span style="color:#006600; font-weight:bold;">&#41;</span>
  r1 = r2 = r3 = r4 = r5 = <span style="color:#006666;">0</span>
  ntest.<span style="color:#9900CC;">times</span> <span style="color:#9966CC; font-weight:bold;">do</span> 
    <span style="color:#008000; font-style:italic;">#Clear ar then add 5000 times this element: &quot;I&quot;, &quot;am&quot;, &quot;great&quot;, null, &quot;or&quot;, &quot;number&quot;, 1</span>
    ar =  <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
    <span style="color:#006666;">5000</span>.<span style="color:#9900CC;">times</span> <span style="color:#9966CC; font-weight:bold;">do</span>
      <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'I'</span>, <span style="color:#996600;">'am'</span>, <span style="color:#996600;">'great'</span>, <span style="color:#0000FF; font-weight:bold;">nil</span>, <span style="color:#996600;">'or'</span>, <span style="color:#996600;">'number'</span>, <span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">each</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>a<span style="color:#006600; font-weight:bold;">|</span> ar <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> a<span style="color:#006600; font-weight:bold;">&#125;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#...then reverse elements to obtain this order: 1, &quot;number&quot;, &quot;or&quot;, null, &quot;great&quot;, &quot;am&quot;, &quot;I&quot;</span>
    ar.<span style="color:#9900CC;">reverse</span>!
&nbsp;
    <span style="color:#008000; font-style:italic;">#...then, count the element with value &quot;great&quot; using two separate cicle</span>
    <span style="color:#008000; font-style:italic;">#the first starting from 31 until 2955 (bounty inclused)</span>
    <span style="color:#006666;">31</span>.<span style="color:#9900CC;">upto</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">2955</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>n<span style="color:#006600; font-weight:bold;">|</span>
      r1 <span style="color:#006600; font-weight:bold;">+</span>= <span style="color:#006666;">1</span> <span style="color:#9966CC; font-weight:bold;">if</span> ar<span style="color:#006600; font-weight:bold;">&#91;</span>n<span style="color:#006600; font-weight:bold;">&#93;</span> == <span style="color:#996600;">'great'</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#008000; font-style:italic;">#the second looping all the array elements</span>
    ar.<span style="color:#9900CC;">each</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>n<span style="color:#006600; font-weight:bold;">|</span> r2<span style="color:#006600; font-weight:bold;">+</span>=<span style="color:#006666;">1</span> <span style="color:#9966CC; font-weight:bold;">if</span> n == <span style="color:#996600;">'great'</span><span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#Loop inside and build a temporary string with index and value, without put it into a variable and only for elements &lt;&gt; null</span>
    ar.<span style="color:#9900CC;">each_index</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>i<span style="color:#006600; font-weight:bold;">|</span> ar<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span> ? <span style="color:#996600;">&quot;#{i} #{ar[i]}&quot;</span> : r3<span style="color:#006600; font-weight:bold;">+</span>=<span style="color:#006666;">1</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#delete null value elements and take its size</span>
    ar.<span style="color:#9900CC;">compact</span>!
    r4 <span style="color:#006600; font-weight:bold;">+</span>= ar.<span style="color:#9900CC;">size</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#then join elements with space and take its size</span>
    r5 <span style="color:#006600; font-weight:bold;">+</span>= ar.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">' '</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">size</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#0000FF; font-weight:bold;">return</span> r1, r2, r3, r4, r5
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> nums_test<span style="color:#006600; font-weight:bold;">&#40;</span>ntest<span style="color:#006600; font-weight:bold;">&#41;</span>
  r1 = r2 = <span style="color:#006666;">0</span>
&nbsp;
  ntest.<span style="color:#9900CC;">times</span> <span style="color:#9966CC; font-weight:bold;">do</span> 
    <span style="color:#008000; font-style:italic;">#Find all prime numbers from 8 to 95 step by 3 (bounds included) and sum all primes got, to check the result</span>
    <span style="color:#008000; font-style:italic;">#51.upto(307) do |n| </span>
    <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">8</span>..<span style="color:#006666;">95</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">step</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>n<span style="color:#006600; font-weight:bold;">|</span>
      primes<span style="color:#006600; font-weight:bold;">&#40;</span>n<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">each</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>a<span style="color:#006600; font-weight:bold;">|</span> r1 <span style="color:#006600; font-weight:bold;">+</span>= a<span style="color:#006600; font-weight:bold;">&#125;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#008000; font-style:italic;">#Calculate factorial numbers start from 2 to 42</span>
    r2 = <span style="color:#006666;">0</span>
    <span style="color:#9966CC; font-weight:bold;">for</span> n <span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#006666;">2</span>..<span style="color:#006666;">42</span>
      r2 <span style="color:#006600; font-weight:bold;">+</span>= fac<span style="color:#006600; font-weight:bold;">&#40;</span>n<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#0000FF; font-weight:bold;">return</span> r1, r2
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#008000; font-style:italic;">#Primes must return an array of prime numbers</span>
<span style="color:#9966CC; font-weight:bold;">def</span> primes<span style="color:#006600; font-weight:bold;">&#40;</span>n<span style="color:#006600; font-weight:bold;">&#41;</span>
  ar = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
  <span style="color:#9966CC; font-weight:bold;">for</span> x <span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">2</span>..<span style="color:#9900CC;">n</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    prime = <span style="color:#0000FF; font-weight:bold;">true</span>
    <span style="color:#9966CC; font-weight:bold;">for</span> y <span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">2</span>..<span style="color:#9900CC;">x</span><span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#9966CC; font-weight:bold;">if</span> x<span style="color:#006600; font-weight:bold;">%</span>y == <span style="color:#006666;">0</span>
        prime = <span style="color:#0000FF; font-weight:bold;">false</span>
        <span style="color:#9966CC; font-weight:bold;">break</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
    ar <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> x <span style="color:#9966CC; font-weight:bold;">if</span> prime
  <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#0000FF; font-weight:bold;">return</span> ar
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> fac<span style="color:#006600; font-weight:bold;">&#40;</span>n<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">1</span>..<span style="color:#9900CC;">n</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">inject</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>total, current<span style="color:#006600; font-weight:bold;">|</span> total <span style="color:#006600; font-weight:bold;">*</span> current<span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># ---  START  ---</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>Warming up...&quot;</span>
t1=t2=t3=<span style="color:#006666;">0</span>
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2, r3, xstr = strings_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">5</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Strings test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p1=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check1: #{r1}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check2: #{r2}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check3: #{r3}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check4: #{xstr.size}&quot;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2, r3, r4, r5 = arrays_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">50</span>, xstr<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Arrays test  - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p2=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check1: #{r1}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check2: #{r2}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check3: #{r3}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check4: #{r4}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check5: #{r5}&quot;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2 = nums_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">500</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Numeric test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p3=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check1: #{r1}&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Check2: #{r2}&quot;</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Ruby Partial elapsed time %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p1<span style="color:#006600; font-weight:bold;">+</span>p2<span style="color:#006600; font-weight:bold;">+</span>p3<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>1. Starting Ruby tests...&quot;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2, r3, xstr = strings_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">5</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Strings test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p1=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2, r3, r4, r5 = arrays_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">50</span>, xstr<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Arrays test  - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p2=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2 = nums_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">500</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Numeric test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p3=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Ruby Partial elapsed time %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p1<span style="color:#006600; font-weight:bold;">+</span>p2<span style="color:#006600; font-weight:bold;">+</span>p3<span style="color:#006600; font-weight:bold;">&#41;</span>
t1<span style="color:#006600; font-weight:bold;">+</span>=p1;t2<span style="color:#006600; font-weight:bold;">+</span>=p2;t3<span style="color:#006600; font-weight:bold;">+</span>=p3
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>2. Starting Ruby tests...&quot;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2, r3, xstr = strings_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">5</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Strings test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p1=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2, r3, r4, r5 = arrays_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">50</span>, xstr<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Arrays test  - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p2=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2 = nums_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">500</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Numeric test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p3=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Ruby Partial elapsed time %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p1<span style="color:#006600; font-weight:bold;">+</span>p2<span style="color:#006600; font-weight:bold;">+</span>p3<span style="color:#006600; font-weight:bold;">&#41;</span>
t1<span style="color:#006600; font-weight:bold;">+</span>=p1;t2<span style="color:#006600; font-weight:bold;">+</span>=p2;t3<span style="color:#006600; font-weight:bold;">+</span>=p3
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>3. Starting Ruby tests...&quot;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2, r3, xstr = strings_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">5</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Strings test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p1=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2, r3, r4, r5 = arrays_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">50</span>, xstr<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Arrays test  - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p2=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
r1, r2 = nums_test<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">500</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Numeric test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p3=<span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Ruby Partial elapsed time %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>p1<span style="color:#006600; font-weight:bold;">+</span>p2<span style="color:#006600; font-weight:bold;">+</span>p3<span style="color:#006600; font-weight:bold;">&#41;</span>
t1<span style="color:#006600; font-weight:bold;">+</span>=p1;t2<span style="color:#006600; font-weight:bold;">+</span>=p2;t3<span style="color:#006600; font-weight:bold;">+</span>=p3
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;-------------------------------------&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Average Strings test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>t1<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Average Arrays test  - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>t2<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Average Numeric test - Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>t3<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>Ruby Average elapsed time %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span>t1<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">+</span>t2<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">+</span>t3<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p><strong>Python 2.6:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">time</span> <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">time</span>
<span style="color: #808080; font-style: italic;">#import psyco</span>
<span style="color: #808080; font-style: italic;">#psyco.full()</span>
<span style="color: #808080; font-style: italic;">#psyco.full(memory=100)</span>
<span style="color: #808080; font-style: italic;">#psyco.profile(0.05, memory=100)</span>
<span style="color: #808080; font-style: italic;">#psyco.profile(0.2)</span>
&nbsp;
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> strings_test<span style="color: black;">&#40;</span>ntest<span style="color: black;">&#41;</span>:
  r1 = r2 = r3 = <span style="color: #ff4500;">0</span>
  xstr = <span style="color: #483d8b;">&quot;&quot;</span>
  <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span>ntest<span style="color: black;">&#41;</span>:
    <span style="color: #808080; font-style: italic;">#Create a string, add 'abcde1234_' until getting a xstr size 1000</span>
    xstr = <span style="color: #483d8b;">'abcde1234_'</span> <span style="color: #66cc66;">*</span> <span style="color: #ff4500;">10000</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#Make letters upcase </span>
    xstr = xstr.<span style="color: black;">upper</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#Change '1234_' with '67890 ' (space at last position)</span>
    <span style="color: #808080; font-style: italic;">#Now the repeated string should be 'ABCDE67890 '</span>
    xstr = xstr.<span style="color: black;">replace</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'1234_'</span>, <span style="color: #483d8b;">'67890 '</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#Cast numbers to string, from 29 up to size/2. Add it to xstr variable as well, ciclying for every number (not adding all numbers once)</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">29</span>,<span style="color: #008000;">int</span><span style="color: black;">&#40;</span><span style="color: #008000;">len</span><span style="color: black;">&#40;</span>xstr<span style="color: black;">&#41;</span>/<span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span> + <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
        xstr += <span style="color: #483d8b;">&quot;%s&quot;</span> <span style="color: #66cc66;">%</span>y
&nbsp;
    <span style="color: #808080; font-style: italic;">#Result 1: Count 'A' char </span>
    <span style="color: #808080; font-style: italic;">#Result 2: Count '9' char </span>
    <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>xstr<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
      <span style="color: #ff7700;font-weight:bold;">if</span> xstr<span style="color: black;">&#91;</span>y<span style="color: black;">&#93;</span> == <span style="color: #483d8b;">'A'</span>:
        r1+=<span style="color: #ff4500;">1</span> 
      <span style="color: #ff7700;font-weight:bold;">elif</span> xstr<span style="color: black;">&#91;</span>y<span style="color: black;">&#93;</span> == <span style="color: #483d8b;">'9'</span>:
        r2+=<span style="color: #ff4500;">1</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#Create an array from xstr using space to split</span>
    r3 += <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>xstr.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
&nbsp;
  <span style="color: #ff7700;font-weight:bold;">return</span> r1, r2, r3, xstr
&nbsp;
<span style="color: #808080; font-style: italic;">#Slower than other version</span>
<span style="color: #ff7700;font-weight:bold;">def</span> multiremove<span style="color: black;">&#40;</span>ar, what<span style="color: black;">&#41;</span>:
  i = <span style="color: #ff4500;">0</span>
  <span style="color: #ff7700;font-weight:bold;">for</span> el <span style="color: #ff7700;font-weight:bold;">in</span> ar:
    <span style="color: #ff7700;font-weight:bold;">if</span> el == what:
      <span style="color: #ff7700;font-weight:bold;">del</span> ar<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>
    i+=<span style="color: #ff4500;">1</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#Ugly but a bit faster</span>
<span style="color: #ff7700;font-weight:bold;">def</span> multiremove2<span style="color: black;">&#40;</span>ar, what<span style="color: black;">&#41;</span>:
  todel = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span> 
  <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>,<span style="color: #008000;">len</span><span style="color: black;">&#40;</span>ar<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> ar<span style="color: black;">&#91;</span>y<span style="color: black;">&#93;</span> == what:
       todel.<span style="color: black;">append</span><span style="color: black;">&#40;</span>y<span style="color: black;">&#41;</span>
  todel.<span style="color: black;">reverse</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
  <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> todel:
     ar.<span style="color: black;">pop</span><span style="color: black;">&#40;</span>y<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> arrays_test<span style="color: black;">&#40;</span>ntest, xstr<span style="color: black;">&#41;</span>:
  r1 = r2 = r3 = r4 = r5 = <span style="color: #ff4500;">0</span>
  <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span>ntest<span style="color: black;">&#41;</span>:
    <span style="color: #808080; font-style: italic;">#Clear ar then add 5000 times this element: &quot;I&quot;, &quot;am&quot;, &quot;great&quot;, null, &quot;or&quot;, &quot;number&quot;, 1</span>
    ar = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #ff4500;">5000</span><span style="color: black;">&#41;</span>:
      ar.<span style="color: black;">extend</span><span style="color: black;">&#40;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;I&quot;</span>, <span style="color: #483d8b;">&quot;am&quot;</span>, <span style="color: #483d8b;">&quot;great&quot;</span>, <span style="color: #008000;">None</span>, <span style="color: #483d8b;">&quot;or&quot;</span>, <span style="color: #483d8b;">&quot;number&quot;</span>, <span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#...then reverse elements to obtain this order: 1, &quot;number&quot;, &quot;or&quot;, null, &quot;great&quot;, &quot;am&quot;, &quot;I&quot;</span>
    ar.<span style="color: black;">reverse</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#...then, count the element with value &quot;great&quot; using two separate cicle</span>
    <span style="color: #808080; font-style: italic;">#the first starting from 31 until 2955 (bounty included)</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">31</span>,<span style="color: #ff4500;">2955</span><span style="color: black;">&#41;</span>:
      <span style="color: #ff7700;font-weight:bold;">if</span> ar<span style="color: black;">&#91;</span>y<span style="color: black;">&#93;</span> == <span style="color: #483d8b;">&quot;great&quot;</span>: r1 +=<span style="color: #ff4500;">1</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#the second looping all the array elements</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>ar<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
      <span style="color: #ff7700;font-weight:bold;">if</span> ar<span style="color: black;">&#91;</span>y<span style="color: black;">&#93;</span> == <span style="color: #483d8b;">&quot;great&quot;</span>: r2+=<span style="color: #ff4500;">1</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#Loop inside and build a temporary string with index and value, without put it into a variable and only for elements &lt;&gt; null</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>ar<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
      <span style="color: #ff7700;font-weight:bold;">if</span> ar<span style="color: black;">&#91;</span>y<span style="color: black;">&#93;</span>:
        <span style="color: #483d8b;">&quot;%s %s&quot;</span> <span style="color: #66cc66;">%</span><span style="color: black;">&#40;</span>y, ar<span style="color: black;">&#91;</span>y<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
      <span style="color: #ff7700;font-weight:bold;">else</span>:
        r3+=<span style="color: #ff4500;">1</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#delete null value elements and take its size</span>
    multiremove2<span style="color: black;">&#40;</span>ar, <span style="color: #008000;">None</span><span style="color: black;">&#41;</span>
    r4 += <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>ar<span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#then join elements with space and take its size</span>
    r5 += <span style="color: #008000;">len</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot; &quot;</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span><span style="color: #008000;">str</span><span style="color: black;">&#40;</span>n<span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">for</span> n <span style="color: #ff7700;font-weight:bold;">in</span> ar<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
  <span style="color: #ff7700;font-weight:bold;">return</span> r1, r2, r3, r4, r5
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> nums_test<span style="color: black;">&#40;</span>ntest<span style="color: black;">&#41;</span>:
  r1 = r2 = <span style="color: #ff4500;">0</span>
  <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span>ntest<span style="color: black;">&#41;</span>:
    <span style="color: #808080; font-style: italic;">#Find all prime numbers from 8 to 95 step by 3 (bounds included) and sum all primes got, to check the result</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> n <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">8</span>, <span style="color: #ff4500;">96</span>, <span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span>:
      <span style="color: #ff7700;font-weight:bold;">for</span> prime <span style="color: #ff7700;font-weight:bold;">in</span> primes<span style="color: black;">&#40;</span>n<span style="color: black;">&#41;</span>:
        r1 += prime
    fac = <span style="color: #ff7700;font-weight:bold;">lambda</span> n:<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>,<span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>n<span style="color: #66cc66;">&gt;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span> <span style="color: #ff7700;font-weight:bold;">or</span> fac<span style="color: black;">&#40;</span>n-<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span>n
    <span style="color: #808080; font-style: italic;">#Calculate factorial numbers start from 2 to 42 (bounds included)</span>
    r2 = <span style="color: #ff4500;">0</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> n <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span>, <span style="color: #ff4500;">43</span><span style="color: black;">&#41;</span>:
      r2 += fac<span style="color: black;">&#40;</span>n<span style="color: black;">&#41;</span>
&nbsp;
  <span style="color: #ff7700;font-weight:bold;">return</span> r1, r2
&nbsp;
<span style="color: #808080; font-style: italic;">#Primes must return an array of prime numbers</span>
<span style="color: #ff7700;font-weight:bold;">def</span> primes<span style="color: black;">&#40;</span>n<span style="color: black;">&#41;</span>:
  ar = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
  <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span>, n+<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
    prime = <span style="color: #008000;">True</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span>, x<span style="color: black;">&#41;</span>:
      <span style="color: #ff7700;font-weight:bold;">if</span> x<span style="color: #66cc66;">%</span>y == <span style="color: #ff4500;">0</span>:
        prime = <span style="color: #008000;">False</span>
        <span style="color: #ff7700;font-weight:bold;">break</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> prime:
      ar.<span style="color: black;">append</span><span style="color: black;">&#40;</span>x<span style="color: black;">&#41;</span>
  <span style="color: #ff7700;font-weight:bold;">return</span> ar
&nbsp;
<span style="color: #808080; font-style: italic;"># ---  START  ---</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Warming up...&quot;</span>
t1=t2=t3=<span style="color: #ff4500;">0</span>
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2, r3, xstr = strings_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span>
p1=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Strings test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p1<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Check1: %s&quot;</span> <span style="color: #66cc66;">%</span>r1
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Check2: %s&quot;</span> <span style="color: #66cc66;">%</span>r2
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Check3: %s&quot;</span> <span style="color: #66cc66;">%</span>r3
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Check4: %d&quot;</span> <span style="color: #66cc66;">%</span><span style="color: black;">&#40;</span><span style="color: #008000;">len</span><span style="color: black;">&#40;</span>xstr<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2, r3, r4, r5 = arrays_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">50</span>, xstr<span style="color: black;">&#41;</span>
p2=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span>  <span style="color: #483d8b;">&quot;Arrays test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p2<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Check1: %s&quot;</span> <span style="color: #66cc66;">%</span>r1
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Check2: %s&quot;</span> <span style="color: #66cc66;">%</span>r2
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Check3: %s&quot;</span> <span style="color: #66cc66;">%</span>r3
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Check4: %s&quot;</span> <span style="color: #66cc66;">%</span>r4
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Check5: %s&quot;</span> <span style="color: #66cc66;">%</span>r5
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2 = nums_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">500</span><span style="color: black;">&#41;</span>
p3=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Numeric test  - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p3<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Check1: %s&quot;</span> <span style="color: #66cc66;">%</span>r1
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Check2: %s&quot;</span> <span style="color: #66cc66;">%</span>r2
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span>  <span style="color: #483d8b;">&quot;Python Partial elapsed time %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p1+p2+p3<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>1. Starting Python tests...&quot;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2, r3, xstr = strings_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span>
p1=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Strings test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p1<span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2, r3, r4, r5 = arrays_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">50</span>, xstr<span style="color: black;">&#41;</span>
p2=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span>  <span style="color: #483d8b;">&quot;Arrays test  - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p2<span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2 = nums_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">500</span><span style="color: black;">&#41;</span>
p3=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Numeric test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p3<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span>  <span style="color: #483d8b;">&quot;Python Partial elapsed time %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p1+p2+p3<span style="color: black;">&#41;</span>
t1+=p1<span style="color: #66cc66;">;</span>t2+=p2<span style="color: #66cc66;">;</span>t3+=p3
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>2. Starting Python tests...&quot;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2, r3, xstr = strings_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span>
p1=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Strings test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p1<span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2, r3, r4, r5 = arrays_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">50</span>, xstr<span style="color: black;">&#41;</span>
p2=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span>  <span style="color: #483d8b;">&quot;Arrays test  - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p2<span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2 = nums_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">500</span><span style="color: black;">&#41;</span>
p3=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Numeric test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p3<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span>  <span style="color: #483d8b;">&quot;Python Partial elapsed time %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p1+p2+p3<span style="color: black;">&#41;</span>
t1+=p1<span style="color: #66cc66;">;</span>t2+=p2<span style="color: #66cc66;">;</span>t3+=p3
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>3. Starting Python tests...&quot;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2, r3, xstr = strings_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span>
p1=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Strings test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p1<span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2, r3, r4, r5 = arrays_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">50</span>, xstr<span style="color: black;">&#41;</span>
p2=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span>  <span style="color: #483d8b;">&quot;Arrays test  - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p2<span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2 = nums_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">500</span><span style="color: black;">&#41;</span>
p3=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Numeric test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p3<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span>  <span style="color: #483d8b;">&quot;Python Partial elapsed time %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p1+p2+p3<span style="color: black;">&#41;</span>
t1+=p1<span style="color: #66cc66;">;</span>t2+=p2<span style="color: #66cc66;">;</span>t3+=p3
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;-------------------------------------&quot;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Average Strings test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>t1/<span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Average Arrays test  - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>t2/<span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Average Numeric test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>t3/<span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Python Average elapsed time %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>t1/<span style="color: #ff4500;">3</span>+t2/<span style="color: #ff4500;">3</span>+t3/<span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span></pre></div></div>

<p><strong>Python 3.1:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">time</span> <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">time</span>
<span style="color: #808080; font-style: italic;">#import psyco</span>
<span style="color: #808080; font-style: italic;">#psyco.full()</span>
<span style="color: #808080; font-style: italic;">#psyco.full(memory=100)</span>
<span style="color: #808080; font-style: italic;">#psyco.profile(0.05, memory=100)</span>
<span style="color: #808080; font-style: italic;">#psyco.profile(0.2)</span>
&nbsp;
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> strings_test<span style="color: black;">&#40;</span>ntest<span style="color: black;">&#41;</span>:
  r1 = r2 = r3 = <span style="color: #ff4500;">0</span>
  xstr = <span style="color: #483d8b;">&quot;&quot;</span>
  <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>ntest<span style="color: black;">&#41;</span>:
    <span style="color: #808080; font-style: italic;">#Create a string, add 'abcde1234_' until getting a xstr size 1000</span>
    xstr = <span style="color: #483d8b;">'abcde1234_'</span> <span style="color: #66cc66;">*</span> <span style="color: #ff4500;">10000</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#Make letters upcase </span>
    xstr = xstr.<span style="color: black;">upper</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#Change '1234_' with '67890 ' (space at last position)</span>
    <span style="color: #808080; font-style: italic;">#Now the repeated string should be 'ABCDE67890 '</span>
    xstr = xstr.<span style="color: black;">replace</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'1234_'</span>, <span style="color: #483d8b;">'67890 '</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#Cast numbers from 29 upto 1028 to string and add it to xstr variable, ciclying for every number (not add all numbers one time)</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">29</span>,<span style="color: #008000;">int</span><span style="color: black;">&#40;</span><span style="color: #008000;">len</span><span style="color: black;">&#40;</span>xstr<span style="color: black;">&#41;</span>/<span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span> + <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
        xstr += <span style="color: #483d8b;">&quot;%s&quot;</span> <span style="color: #66cc66;">%</span>y
&nbsp;
    <span style="color: #808080; font-style: italic;">#Result 1: Count 'A' char </span>
    <span style="color: #808080; font-style: italic;">#Result 2: Count '9' char </span>
    <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>xstr<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
      <span style="color: #ff7700;font-weight:bold;">if</span> xstr<span style="color: black;">&#91;</span>y<span style="color: black;">&#93;</span> == <span style="color: #483d8b;">'A'</span>:
        r1+=<span style="color: #ff4500;">1</span> 
      <span style="color: #ff7700;font-weight:bold;">elif</span> xstr<span style="color: black;">&#91;</span>y<span style="color: black;">&#93;</span> == <span style="color: #483d8b;">'9'</span>:
        r2+=<span style="color: #ff4500;">1</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#Create an array from xstr using space to split</span>
    r3 += <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>xstr.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
&nbsp;
  <span style="color: #ff7700;font-weight:bold;">return</span> r1, r2, r3, xstr
&nbsp;
<span style="color: #808080; font-style: italic;">#Slower than other version</span>
<span style="color: #ff7700;font-weight:bold;">def</span> multiremove<span style="color: black;">&#40;</span>ar, what<span style="color: black;">&#41;</span>:
  i = <span style="color: #ff4500;">0</span>
  <span style="color: #ff7700;font-weight:bold;">for</span> el <span style="color: #ff7700;font-weight:bold;">in</span> ar:
    <span style="color: #ff7700;font-weight:bold;">if</span> el == what:
      <span style="color: #ff7700;font-weight:bold;">del</span> ar<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>
    i+=<span style="color: #ff4500;">1</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#Ugly but a bit faster</span>
<span style="color: #ff7700;font-weight:bold;">def</span> multiremove2<span style="color: black;">&#40;</span>ar, what<span style="color: black;">&#41;</span>:
  todel = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span> 
  <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>,<span style="color: #008000;">len</span><span style="color: black;">&#40;</span>ar<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> ar<span style="color: black;">&#91;</span>y<span style="color: black;">&#93;</span> == what:
       todel.<span style="color: black;">append</span><span style="color: black;">&#40;</span>y<span style="color: black;">&#41;</span>
  todel.<span style="color: black;">reverse</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
  <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> todel:
     ar.<span style="color: black;">pop</span><span style="color: black;">&#40;</span>y<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> arrays_test<span style="color: black;">&#40;</span>ntest, xstr<span style="color: black;">&#41;</span>:
  r1 = r2 = r3 = r4 = r5 = <span style="color: #ff4500;">0</span>
  <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>ntest<span style="color: black;">&#41;</span>:
    <span style="color: #808080; font-style: italic;">#Clear ar then add 5000 times this element: &quot;I&quot;, &quot;am&quot;, &quot;great&quot;, null, &quot;or&quot;, &quot;number&quot;, 1</span>
    ar = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #ff4500;">5000</span><span style="color: black;">&#41;</span>:
      ar.<span style="color: black;">extend</span><span style="color: black;">&#40;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;I&quot;</span>, <span style="color: #483d8b;">&quot;am&quot;</span>, <span style="color: #483d8b;">&quot;great&quot;</span>, <span style="color: #008000;">None</span>, <span style="color: #483d8b;">&quot;or&quot;</span>, <span style="color: #483d8b;">&quot;number&quot;</span>, <span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#...then reverse elements to obtain this order: 1, &quot;number&quot;, &quot;or&quot;, null, &quot;great&quot;, &quot;am&quot;, &quot;I&quot;</span>
    ar.<span style="color: black;">reverse</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#...then, count the element with value &quot;great&quot; using two separate cicle</span>
    <span style="color: #808080; font-style: italic;">#the first starting from 31 until 2955 (bounty included)</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">31</span>,<span style="color: #ff4500;">2955</span><span style="color: black;">&#41;</span>:
      <span style="color: #ff7700;font-weight:bold;">if</span> ar<span style="color: black;">&#91;</span>y<span style="color: black;">&#93;</span> == <span style="color: #483d8b;">&quot;great&quot;</span>: r1 +=<span style="color: #ff4500;">1</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#the second looping all the array elements</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>ar<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
      <span style="color: #ff7700;font-weight:bold;">if</span> ar<span style="color: black;">&#91;</span>y<span style="color: black;">&#93;</span> == <span style="color: #483d8b;">&quot;great&quot;</span>: r2+=<span style="color: #ff4500;">1</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#Loop inside and build a temporary string with index and value, without put it into a variable and only for elements &lt;&gt; null</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>ar<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
      <span style="color: #ff7700;font-weight:bold;">if</span> ar<span style="color: black;">&#91;</span>y<span style="color: black;">&#93;</span>:
        <span style="color: #483d8b;">&quot;%s %s&quot;</span> <span style="color: #66cc66;">%</span><span style="color: black;">&#40;</span>y, ar<span style="color: black;">&#91;</span>y<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
      <span style="color: #ff7700;font-weight:bold;">else</span>:
        r3+=<span style="color: #ff4500;">1</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#delete null value elements and take its size</span>
    multiremove2<span style="color: black;">&#40;</span>ar, <span style="color: #008000;">None</span><span style="color: black;">&#41;</span>
    r4 += <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>ar<span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">#then join elements with space and take its size</span>
    r5 += <span style="color: #008000;">len</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot; &quot;</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span><span style="color: #008000;">str</span><span style="color: black;">&#40;</span>n<span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">for</span> n <span style="color: #ff7700;font-weight:bold;">in</span> ar<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
  <span style="color: #ff7700;font-weight:bold;">return</span> r1, r2, r3, r4, r5
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> nums_test<span style="color: black;">&#40;</span>ntest<span style="color: black;">&#41;</span>:
  r1 = r2 = <span style="color: #ff4500;">0</span>
  <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>ntest<span style="color: black;">&#41;</span>:
    <span style="color: #808080; font-style: italic;">#Find all prime numbers from 8 to 95 step by 3 (bounds included) and sum all primes got, to check the result</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> n <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">8</span>, <span style="color: #ff4500;">96</span>, <span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span>:
      <span style="color: #ff7700;font-weight:bold;">for</span> prime <span style="color: #ff7700;font-weight:bold;">in</span> primes<span style="color: black;">&#40;</span>n<span style="color: black;">&#41;</span>:
        r1 += prime
    fac = <span style="color: #ff7700;font-weight:bold;">lambda</span> n:<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>,<span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>n<span style="color: #66cc66;">&gt;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span> <span style="color: #ff7700;font-weight:bold;">or</span> fac<span style="color: black;">&#40;</span>n-<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span>n
    <span style="color: #808080; font-style: italic;">#Calculate factorial numbers start from 2 to 42 (bounds included)</span>
    r2 = <span style="color: #ff4500;">0</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> n <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span>, <span style="color: #ff4500;">43</span><span style="color: black;">&#41;</span>:
      r2 += fac<span style="color: black;">&#40;</span>n<span style="color: black;">&#41;</span>
&nbsp;
  <span style="color: #ff7700;font-weight:bold;">return</span> r1, r2
&nbsp;
<span style="color: #808080; font-style: italic;">#Primes must return an array of prime numbers</span>
<span style="color: #ff7700;font-weight:bold;">def</span> primes<span style="color: black;">&#40;</span>n<span style="color: black;">&#41;</span>:
  ar = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
  <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span>, n+<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
    prime = <span style="color: #008000;">True</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span>, x<span style="color: black;">&#41;</span>:
      <span style="color: #ff7700;font-weight:bold;">if</span> x<span style="color: #66cc66;">%</span>y == <span style="color: #ff4500;">0</span>:
        prime = <span style="color: #008000;">False</span>
        <span style="color: #ff7700;font-weight:bold;">break</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> prime:
      ar.<span style="color: black;">append</span><span style="color: black;">&#40;</span>x<span style="color: black;">&#41;</span>
  <span style="color: #ff7700;font-weight:bold;">return</span> ar
&nbsp;
<span style="color: #808080; font-style: italic;"># ---  START  ---</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Warming up...&quot;</span><span style="color: black;">&#41;</span>
t1=t2=t3=<span style="color: #ff4500;">0</span>
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2, r3, xstr = strings_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span>
p1=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Strings test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> p1<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Check1: %s&quot;</span> <span style="color: #66cc66;">%</span> r1<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Check2: %s&quot;</span> <span style="color: #66cc66;">%</span> r2<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Check3: %s&quot;</span> <span style="color: #66cc66;">%</span> r3<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Check4: %d&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>xstr<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2, r3, r4, r5 = arrays_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">50</span>, xstr<span style="color: black;">&#41;</span>
p2=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Arrays test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> p2<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Check1: %s&quot;</span> <span style="color: #66cc66;">%</span> r1<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Check2: %s&quot;</span> <span style="color: #66cc66;">%</span> r2<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Check3: %s&quot;</span> <span style="color: #66cc66;">%</span> r3<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Check4: %s&quot;</span> <span style="color: #66cc66;">%</span> r4<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Check5: %s&quot;</span> <span style="color: #66cc66;">%</span> r5<span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2 = nums_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">500</span><span style="color: black;">&#41;</span>
p3=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Numeric test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> p3<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Check1: %s&quot;</span> <span style="color: #66cc66;">%</span> r1<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Check2: %s&quot;</span> <span style="color: #66cc66;">%</span> r2<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;Python Partial elapsed time %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p1+p2+p3<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>1. Starting Python tests...&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2, r3, xstr = strings_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span>
p1=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Strings test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> p1<span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2, r3, r4, r5 = arrays_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">50</span>, xstr<span style="color: black;">&#41;</span>
p2=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;Arrays test  - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> p2<span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2 = nums_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">500</span><span style="color: black;">&#41;</span>
p3=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Numeric test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> p3<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;Python Partial elapsed time %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p1+p2+p3<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
t1+=p1<span style="color: #66cc66;">;</span>t2+=p2<span style="color: #66cc66;">;</span>t3+=p3
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>2. Starting Python tests...&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2, r3, xstr = strings_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span>
p1=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Strings test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> p1<span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2, r3, r4, r5 = arrays_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">50</span>, xstr<span style="color: black;">&#41;</span>
p2=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;Arrays test  - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> p2<span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2 = nums_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">500</span><span style="color: black;">&#41;</span>
p3=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Numeric test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> p3<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;Python Partial elapsed time %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p1+p2+p3<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
t1+=p1<span style="color: #66cc66;">;</span>t2+=p2<span style="color: #66cc66;">;</span>t3+=p3
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>3. Starting Python tests...&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2, r3, xstr = strings_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span>
p1=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Strings test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> p1<span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2, r3, r4, r5 = arrays_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">50</span>, xstr<span style="color: black;">&#41;</span>
p2=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;Arrays test  - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> p2<span style="color: black;">&#41;</span>
&nbsp;
stime = <span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
r1, r2 = nums_test<span style="color: black;">&#40;</span><span style="color: #ff4500;">500</span><span style="color: black;">&#41;</span>
p3=<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - stime
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Numeric test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> p3<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;Python Partial elapsed time %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>p1+p2+p3<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
t1+=p1<span style="color: #66cc66;">;</span>t2+=p2<span style="color: #66cc66;">;</span>t3+=p3
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;-------------------------------------&quot;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Average Strings test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>t1/<span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Average Arrays test  - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>t2/<span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Average Numeric test - Elapsed %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>t3/<span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Python Average elapsed time %.3f&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>t1/<span style="color: #ff4500;">3</span>+t2/<span style="color: #ff4500;">3</span>+t3/<span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://mastrodonato.info/index.php/2010/01/ruby-vs-ruby-vs-python-vs-python/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comparazione linguaggi script per la geometria frattale</title>
		<link>http://mastrodonato.info/index.php/2009/08/comparazione-linguaggi-script-per-la-geometria-frattale/</link>
		<comments>http://mastrodonato.info/index.php/2009/08/comparazione-linguaggi-script-per-la-geometria-frattale/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 23:38:24 +0000</pubDate>
		<dc:creator>Marco Mastrodonato</dc:creator>
				<category><![CDATA[IronRuby .NET]]></category>
		<category><![CDATA[JRuby]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Benchmark]]></category>
		<category><![CDATA[Frattali]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[Mandelbrot]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://mastrodonato.info/?p=209</guid>
		<description><![CDATA[In questo articolo metterò a confronto le ultime incarnazioni di ruby, con le ultime di python, groovy, php, lua, perl e anche java, per avere un metro di paragone con un linguaggio precompilato. Vedremo, infatti, come si comportano i linguaggi di script applicati alla geometria frattale, più precisamente un algoritmo della famiglia di Mandelbrot. Navigando, [...]]]></description>
			<content:encoded><![CDATA[<p>In questo articolo metterò a confronto le ultime incarnazioni di ruby, con le ultime di python, groovy, php, lua, perl e anche java, per avere un metro di paragone con un linguaggio precompilato. Vedremo, infatti, come si comportano i linguaggi di script applicati alla geometria frattale, più precisamente un algoritmo della famiglia di Mandelbrot.<br />
Navigando, ho trovato un <a href="http://www.timestretch.com/FractalBenchmark.html#4d9e0f15fc1b42420cf3f778c3cccad7">confronto</a> molto interessante ma un pò datato, risale a più di due anni fa. Da allora sono cambiate un pò di cose e ne ho approfittato per fare un aggiornamento anche se non includerò tutti quei linguaggi molti dei quali semi sconosciuti. Questa è l&#8217;occasione per mettere a confronto ruby e python anche nelle loro versioni java e .net, un intenzione che avevo già da un pò di tempo.</p>
<p>Usare un frattale come benchmark è oltretutto comodo: se un tentativo di ottimizzazione non va a buon fine se ne ha subito l&#8217;evidenza ed essendo disegnato in tempo reale, si riesce a percepire la velocità di esecuzione. Il frattale è disegnato in ascii anche perchè l&#8217;utilizzo di librerie esterne ne avrebbe drogato l&#8217;esito.</p>
<pre>
                                       *
                                       *
                                       *
                                       *
                                       *
                                      ***
                                     *****
                                     *****
                                      ***
                                       *
                                   *********
                                 *************
                                ***************
                             *********************
                             *********************
                              *******************
                              *******************
                              *******************
                              *******************
                            ***********************
                              *******************
                              *******************
                             *********************
                              *******************
                              *******************
                               *****************
                                ***************
                                 *************
                                   *********
                                       *
                                ***************
                            ***********************
                         * ************************* *
                         *****************************
                      * ******************************* *
                       *********************************
                      ***********************************
                    ***************************************
               *** ***************************************** ***
               *************************************************
                ***********************************************
                 *********************************************
                 *********************************************
                ***********************************************
                ***********************************************
              ***************************************************
               *************************************************
               *************************************************
              ***************************************************
              ***************************************************
         *    ***************************************************    *
       *****  ***************************************************  *****
       ****** *************************************************** ******
      ******* *************************************************** *******
    ***********************************************************************
    ********* *************************************************** *********
       ****** *************************************************** ******
       *****  ***************************************************  *****
              ***************************************************
              ***************************************************
              ***************************************************
              ***************************************************
               *************************************************
               *************************************************
              ***************************************************
                ***********************************************
                ***********************************************
                  *******************************************
                   *****************************************
                 *********************************************
                **** ****************** ****************** ****
                 ***  ****************   ****************  ***
                  *    **************     **************    *
                         ***********       ***********
                         **  *****           *****  **
                          *   *                 *   *
</pre>
<p>Questi sono i dati del sistema:<br />
Dell Inspiron 9400, Centrino Duo, T7200 @ 2Ghz 4Mb Cache L1, Ram 2Gb @ 667Mhz<br />
Windows XP pro SP3<br />
Java 6 update 15<br />
Microsoft .NET 3.5 SP1</p>
<p>Questi sono i risultati prestazionali ottenuti da una media di cinque rilevazioni catturate dopo qualche tentativo (non mi sono fidato dello startup delle VM):</p>
<pre>
Linguaggio      Tempo (in secondi)  n più lento di java
_____________________________________________________________
Java 6 update 15    0,153
Lua 5.1.4           0,815	           5x
Php 5.3.0           2,083	          14x
Python 2.6.2        2,269 	          15x
Python 3.1.1        1,566 	          10x
Jython 2.5.0        2,850 	          19x
Jruby 1.3.1         2,466 	          16x
Groovy 1.6.3        6,491 	          42x
Ruby 1.9.1 p129	    2,688 	          18x
Ruby 1.8.6 p368	    6,863 	          45x
Ruby 1.8.6 p111	    9,709 	          63x
IronRuby 0.9.0	    6,038 	          39x
IronPyhon 2.0.2     0,978 	           6x
Perl 5.10.0         2,722 	          18x
</pre>
<p>Questo è il grafico, naturalmente <strong>valori più bassi indicano una prestazione migliore</strong></p>
<p><img src="http://mastrodonato.info/wp-content/uploads/2009/08/chart2_537.png" alt="Chart" title="Chart" width="537" height="457" class="aligncenter size-full wp-image-262" /></p>
<p>Questi sono gli script usati per generare il frattale, andavano benissimo quelli di Erik Wrenholt, mi sono limitato a qualche semplice modifica per far funzionare python 3.1 o per migliorare lievemente la già ottima leggibilità in ruby e lua.</p>
<p><strong>Java</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// by Erik Wrenholt</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.*</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Bench1
<span style="color: #009900;">&#123;</span>  
	<span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">int</span> BAILOUT <span style="color: #339933;">=</span> <span style="color: #cc66cc;">16</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">int</span> MAX_ITERATIONS <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1000</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">int</span> iterate<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">float</span> x, <span style="color: #000066; font-weight: bold;">float</span> y<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">float</span> cr <span style="color: #339933;">=</span> y<span style="color: #339933;">-</span>0.5f<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">float</span> ci <span style="color: #339933;">=</span> x<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">float</span> zi <span style="color: #339933;">=</span> 0.0f<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">float</span> zr <span style="color: #339933;">=</span> 0.0f<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			i<span style="color: #339933;">++;</span>
			<span style="color: #000066; font-weight: bold;">float</span> temp <span style="color: #339933;">=</span> zr <span style="color: #339933;">*</span> zi<span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">float</span> zr2 <span style="color: #339933;">=</span> zr <span style="color: #339933;">*</span> zr<span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">float</span> zi2 <span style="color: #339933;">=</span> zi <span style="color: #339933;">*</span> zi<span style="color: #339933;">;</span>
			zr <span style="color: #339933;">=</span> zr2 <span style="color: #339933;">-</span> zi2 <span style="color: #339933;">+</span> cr<span style="color: #339933;">;</span>
			zi <span style="color: #339933;">=</span> temp <span style="color: #339933;">+</span> temp <span style="color: #339933;">+</span> ci<span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>zi2 <span style="color: #339933;">+</span> zr2 <span style="color: #339933;">&gt;</span> BAILOUT<span style="color: #009900;">&#41;</span>
				<span style="color: #000000; font-weight: bold;">return</span> i<span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">&gt;</span> MAX_ITERATIONS<span style="color: #009900;">&#41;</span>
				<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> args<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #003399;">Date</span> d1 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">int</span> x,y<span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>y <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">39</span><span style="color: #339933;">;</span> y <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">39</span><span style="color: #339933;">;</span> y<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">print</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>x <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">39</span><span style="color: #339933;">;</span> x <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">39</span><span style="color: #339933;">;</span> x<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>iterate<span style="color: #009900;">&#40;</span>x<span style="color: #339933;">/</span>40.0f,y<span style="color: #339933;">/</span>40.0f<span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> 
					<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">print</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;*&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">else</span>
					<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">print</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #003399;">Date</span> d2 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">long</span> diff <span style="color: #339933;">=</span> d2.<span style="color: #006633;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> d1.<span style="color: #006633;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Java Elapsed &quot;</span> <span style="color: #339933;">+</span> diff<span style="color: #339933;">/</span>1000.0f<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><strong>Lua</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
</pre></td><td class="code"><pre class="lua" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">-- By Erik Wrenholt</span>
&nbsp;
<span style="color: #b1b100;">local</span> BAILOUT <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">16</span>
<span style="color: #b1b100;">local</span> MAX_ITERATIONS <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1000</span>
&nbsp;
<span style="color: #b1b100;">function</span> iterate<span style="color: #66cc66;">&#40;</span>x,y<span style="color: #66cc66;">&#41;</span>
&nbsp;
  <span style="color: #b1b100;">local</span> cr <span style="color: #66cc66;">=</span> y-<span style="color: #cc66cc;">0.5</span>
  <span style="color: #b1b100;">local</span> ci <span style="color: #66cc66;">=</span> x
  <span style="color: #b1b100;">local</span> zi <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0.0</span>
  <span style="color: #b1b100;">local</span> zr <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0.0</span>
  <span style="color: #b1b100;">local</span> i <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span>
&nbsp;
  <span style="color: #b1b100;">while</span> <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">do</span>
    i <span style="color: #66cc66;">=</span> i+<span style="color: #cc66cc;">1</span>
    <span style="color: #b1b100;">local</span> temp <span style="color: #66cc66;">=</span> zr <span style="color: #66cc66;">*</span> zi
    <span style="color: #b1b100;">local</span> zr2 <span style="color: #66cc66;">=</span> zr<span style="color: #66cc66;">*</span>zr
    <span style="color: #b1b100;">local</span> zi2 <span style="color: #66cc66;">=</span> zi<span style="color: #66cc66;">*</span>zi
    zr <span style="color: #66cc66;">=</span> zr2-zi2+cr
    zi <span style="color: #66cc66;">=</span> temp+temp+ci
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>zi2+zr2 <span style="color: #66cc66;">&gt;</span> BAILOUT<span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">then</span>
      <span style="color: #b1b100;">return</span> i
    <span style="color: #b1b100;">end</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>i <span style="color: #66cc66;">&gt;</span> MAX_ITERATIONS<span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">then</span>
      <span style="color: #b1b100;">return</span> <span style="color: #cc66cc;">0</span>
    <span style="color: #b1b100;">end</span>
  <span style="color: #b1b100;">end</span>
<span style="color: #b1b100;">end</span>
&nbsp;
<span style="color: #b1b100;">function</span> bench1<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #b1b100;">local</span> t <span style="color: #66cc66;">=</span> <span style="color: #b1b100;">os.clock</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #b1b100;">for</span> y <span style="color: #66cc66;">=</span> -<span style="color: #cc66cc;">39</span>, <span style="color: #cc66cc;">38</span> <span style="color: #b1b100;">do</span>
    <span style="color: #b1b100;">for</span> x <span style="color: #66cc66;">=</span> -<span style="color: #cc66cc;">39</span>, <span style="color: #cc66cc;">38</span> <span style="color: #b1b100;">do</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>iterate<span style="color: #66cc66;">&#40;</span>x<span style="color: #66cc66;">/</span><span style="color: #cc66cc;">40.0</span>, y<span style="color: #66cc66;">/</span><span style="color: #cc66cc;">40</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">then</span> <span style="color: #b1b100;">io.write</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;*&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">io.write</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot; &quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">end</span>
    <span style="color: #b1b100;">end</span>
    <span style="color: #b1b100;">io.write</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #b1b100;">end</span>
  <span style="color: #b1b100;">io.write</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">string.format</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Time Elapsed %.3fn&quot;</span>, <span style="color: #b1b100;">os.clock</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - t<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #b1b100;">end</span>
&nbsp;
bench1<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span></pre></td></tr></table></div>

<p><strong>Php</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;BAILOUT&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">16</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;MAX_ITERATIONS&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Bench1
<span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">function</span> Bench1<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$d1</span> <span style="color: #339933;">=</span> <span style="color: #990000;">microtime</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$y</span> <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">39</span><span style="color: #339933;">;</span> <span style="color: #000088;">$y</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">39</span><span style="color: #339933;">;</span> <span style="color: #000088;">$y</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">echo</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$x</span> <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">39</span><span style="color: #339933;">;</span> <span style="color: #000088;">$x</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">39</span><span style="color: #339933;">;</span> <span style="color: #000088;">$x</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">iterate</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x</span><span style="color: #339933;">/</span><span style="color:#800080;">40.0</span><span style="color: #339933;">,</span><span style="color: #000088;">$y</span><span style="color: #339933;">/</span><span style="color:#800080;">40.0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> 
					<span style="color: #b1b100;">echo</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;*&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">else</span>
					<span style="color: #b1b100;">echo</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000088;">$d2</span> <span style="color: #339933;">=</span> <span style="color: #990000;">microtime</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$diff</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$d2</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$d1</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>PHP Elapsed <span style="color: #009933; font-weight: bold;">%0.3f</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$diff</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">function</span> iterate<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x</span><span style="color: #339933;">,</span><span style="color: #000088;">$y</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$cr</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$y</span><span style="color: #339933;">-</span><span style="color:#800080;">0.5</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$ci</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$x</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$zi</span> <span style="color: #339933;">=</span> <span style="color:#800080;">0.0</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$zr</span> <span style="color: #339933;">=</span> <span style="color:#800080;">0.0</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$i</span><span style="color: #339933;">++;</span>
			<span style="color: #000088;">$temp</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$zr</span> <span style="color: #339933;">*</span> <span style="color: #000088;">$zi</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$zr2</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$zr</span> <span style="color: #339933;">*</span> <span style="color: #000088;">$zr</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$zi2</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$zi</span> <span style="color: #339933;">*</span> <span style="color: #000088;">$zi</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$zr</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$zr2</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$zi2</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$cr</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$zi</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$temp</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$temp</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$ci</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$zi2</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$zr2</span> <span style="color: #339933;">&gt;</span> BAILOUT<span style="color: #009900;">&#41;</span>
				<span style="color: #b1b100;">return</span> <span style="color: #000088;">$i</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">&gt;</span> MAX_ITERATIONS<span style="color: #009900;">&#41;</span>
				<span style="color: #b1b100;">return</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">new</span> Bench1<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>Python</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>, <span style="color: #dc143c;">time</span>
stdout = <span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span>
&nbsp;
BAILOUT = <span style="color: #ff4500;">16</span>
MAX_ITERATIONS = <span style="color: #ff4500;">1000</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> Bench1:
  <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: black;">&#40;</span><span style="color: #483d8b;">'Rendering...'</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>-<span style="color: #ff4500;">39</span>, <span style="color: #ff4500;">39</span><span style="color: black;">&#41;</span>:
      stdout.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'n'</span><span style="color: black;">&#41;</span>
      <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>-<span style="color: #ff4500;">39</span>, <span style="color: #ff4500;">39</span><span style="color: black;">&#41;</span>:
        i = <span style="color: #008000;">self</span>.<span style="color: black;">start</span><span style="color: black;">&#40;</span>x/<span style="color: #ff4500;">40.0</span>, y/<span style="color: #ff4500;">40.0</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">if</span> i == <span style="color: #ff4500;">0</span>:
          stdout.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'*'</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">else</span>:
          stdout.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">' '</span><span style="color: black;">&#41;</span>
&nbsp;
  <span style="color: #ff7700;font-weight:bold;">def</span> start<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, x, y<span style="color: black;">&#41;</span>:
    cr = y - <span style="color: #ff4500;">0.5</span>
    ci = x
    zi = zr = <span style="color: #ff4500;">0.0</span>
    i = <span style="color: #ff4500;">0</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">while</span> <span style="color: #008000;">True</span>:
      i += <span style="color: #ff4500;">1</span>
      temp = zr <span style="color: #66cc66;">*</span> zi
      zr2 = zr <span style="color: #66cc66;">*</span> zr
      zi2 = zi <span style="color: #66cc66;">*</span> zi
      zr = zr2 - zi2 + cr
      zi = temp + temp + ci
&nbsp;
      <span style="color: #ff7700;font-weight:bold;">if</span> zi2 + zr2 <span style="color: #66cc66;">&gt;</span> BAILOUT:
        <span style="color: #ff7700;font-weight:bold;">return</span> i
      <span style="color: #ff7700;font-weight:bold;">if</span> i <span style="color: #66cc66;">&gt;</span> MAX_ITERATIONS:
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #ff4500;">0</span>
&nbsp;
t = <span style="color: #dc143c;">time</span>.<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
Bench1<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: black;">&#40;</span><span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\n</span>Python Elapsed %.3f'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span><span style="color: #dc143c;">time</span>.<span style="color: #dc143c;">time</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> - t<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p><strong>Groovy</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
</pre></td><td class="code"><pre class="groovy" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">//Created By Marco Mastrodonato 22/09/2009</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Bench1<span style="color: #66cc66;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #993333;">int</span> BAILOUT <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">16</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #993333;">int</span> MAX_ITERATIONS <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1000</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">def</span> Bench1<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
        <span style="color: #993399;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Rendering...&quot;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span>y <span style="color: #b1b100;">in</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">39</span>..<span style="color: #cc66cc;">39</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
            <span style="color: #993399;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span>x <span style="color: #b1b100;">in</span> <span style="color: #66cc66;">-</span><span style="color: #cc66cc;">39</span>..<span style="color: #cc66cc;">39</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
                <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>iterate<span style="color: #66cc66;">&#40;</span>x/<span style="color: #cc66cc;">40.0</span>, y/<span style="color: #cc66cc;">40.0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
                    <span style="color: #993399;">print</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;*&quot;</span><span style="color: #66cc66;">&#41;</span>
                <span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
                    <span style="color: #993399;">print</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot; &quot;</span><span style="color: #66cc66;">&#41;</span>
                <span style="color: #66cc66;">&#125;</span>
            <span style="color: #66cc66;">&#125;</span>
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">def</span> iterate<span style="color: #66cc66;">&#40;</span>x,y<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
        <span style="color: #993333;">float</span> cr <span style="color: #66cc66;">=</span> y<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">0.5</span>
        <span style="color: #993333;">float</span> ci <span style="color: #66cc66;">=</span> x
        <span style="color: #993333;">float</span> zi <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0.0</span>
        <span style="color: #993333;">float</span> zr <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0.0</span>
        <span style="color: #000000; font-weight: bold;">def</span> i <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span>
        <span style="color: #b1b100;">while</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
            i <span style="color: #66cc66;">+=</span> <span style="color: #cc66cc;">1</span>
            <span style="color: #993333;">float</span> temp <span style="color: #66cc66;">=</span> zr <span style="color: #66cc66;">*</span> zi
            <span style="color: #993333;">float</span> zr2 <span style="color: #66cc66;">=</span> zr <span style="color: #66cc66;">*</span> zr
            <span style="color: #993333;">float</span> zi2 <span style="color: #66cc66;">=</span> zi <span style="color: #66cc66;">*</span> zi
            zr <span style="color: #66cc66;">=</span> zr2 <span style="color: #66cc66;">-</span> zi2 <span style="color: #66cc66;">+</span> cr
            zi <span style="color: #66cc66;">=</span> temp <span style="color: #66cc66;">+</span> temp <span style="color: #66cc66;">+</span> ci
            <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>zi2 <span style="color: #66cc66;">+</span> zr2 <span style="color: #66cc66;">&gt;</span> BAILOUT<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span> 
                <span style="color: #000000; font-weight: bold;">return</span> i
            <span style="color: #66cc66;">&#125;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>i <span style="color: #66cc66;">&gt;</span> MAX_ITERATIONS<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span> 
                <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #cc66cc;">0</span>
            <span style="color: #66cc66;">&#125;</span> 
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
time1 <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">Date</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">time</span>
<span style="color: #000000; font-weight: bold;">new</span> Bench1<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
time2 <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">Date</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">time</span>
<span style="color: #993333;">float</span> elapsed <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span>time2 <span style="color: #66cc66;">-</span> time1<span style="color: #66cc66;">&#41;</span>/<span style="color: #cc66cc;">1000</span>
<span style="color: #993399;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Groovy Elapsed ${elapsed}&quot;</span><span style="color: #66cc66;">&#41;</span></pre></td></tr></table></div>

<p><strong>Ruby</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">BAILOUT = <span style="color:#006666;">16</span>
MAX_ITERATIONS = <span style="color:#006666;">1000</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> Bench1
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> initialize
    <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Rendering...&quot;</span>
    <span style="color:#9966CC; font-weight:bold;">for</span> y <span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">39</span>..<span style="color:#006666;">39</span>
      <span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>&quot;</span>
      <span style="color:#9966CC; font-weight:bold;">for</span> x <span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">39</span>..<span style="color:#006666;">39</span>
        i = iterate x<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">40.0</span>, y<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006666;">40.0</span>
        <span style="color:#9966CC; font-weight:bold;">if</span> i == <span style="color:#006666;">0</span> <span style="color:#9966CC; font-weight:bold;">then</span> <span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">&quot;*&quot;</span> <span style="color:#9966CC; font-weight:bold;">else</span> <span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">&quot; &quot;</span> <span style="color:#9966CC; font-weight:bold;">end</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> iterate<span style="color:#006600; font-weight:bold;">&#40;</span>x,y<span style="color:#006600; font-weight:bold;">&#41;</span>
    cr = y<span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">0.5</span>
    ci = x
    zi = zr = <span style="color:#006666;">0.0</span>
    i = <span style="color:#006666;">0</span>
    <span style="color:#9966CC; font-weight:bold;">while</span> <span style="color:#0000FF; font-weight:bold;">true</span>
      i <span style="color:#006600; font-weight:bold;">+</span>= <span style="color:#006666;">1</span>
      temp = zr <span style="color:#006600; font-weight:bold;">*</span> zi
      zr2 = zr <span style="color:#006600; font-weight:bold;">*</span> zr
      zi2 = zi <span style="color:#006600; font-weight:bold;">*</span> zi
      zr = zr2 <span style="color:#006600; font-weight:bold;">-</span> zi2 <span style="color:#006600; font-weight:bold;">+</span> cr
      zi = temp <span style="color:#006600; font-weight:bold;">+</span> temp <span style="color:#006600; font-weight:bold;">+</span> ci
      <span style="color:#0000FF; font-weight:bold;">return</span> i <span style="color:#9966CC; font-weight:bold;">if</span> zi2 <span style="color:#006600; font-weight:bold;">+</span> zr2 <span style="color:#006600; font-weight:bold;">&gt;</span> BAILOUT
      <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#006666;">0</span> <span style="color:#9966CC; font-weight:bold;">if</span> i <span style="color:#006600; font-weight:bold;">&gt;</span> MAX_ITERATIONS
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
time = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
Bench1.<span style="color:#9900CC;">new</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>Ruby Elapsed %.3f&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span> <span style="color:#006600; font-weight:bold;">-</span> time<span style="color:#006600; font-weight:bold;">&#41;</span></pre></td></tr></table></div>

<p><strong>Perl</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
</pre></td><td class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Ported from C to Perl by Anders Bergh &lt;anders1@gmail.com&gt;</span>
&nbsp;
<span style="color: #0000ff;">$BAILOUT</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">16</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$MAX_ITERATIONS</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1000</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #0000ff;">$begin</span> <span style="color: #339933;">=</span> <span style="color: #000066;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">sub</span> mandelbrot <span style="color: #009900;">&#123;</span>
       <span style="color: #000066;">local</span> <span style="color: #0000ff;">$x</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$_</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
       <span style="color: #000066;">local</span> <span style="color: #0000ff;">$y</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$_</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
       <span style="color: #000066;">local</span> <span style="color: #0000ff;">$cr</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$y</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">0.5</span><span style="color: #339933;">;</span>
       <span style="color: #000066;">local</span> <span style="color: #0000ff;">$ci</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$x</span><span style="color: #339933;">;</span>
       <span style="color: #000066;">local</span> <span style="color: #0000ff;">$zi</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.0</span><span style="color: #339933;">;</span>
       <span style="color: #000066;">local</span> <span style="color: #0000ff;">$zr</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0.0</span><span style="color: #339933;">;</span>
       <span style="color: #000066;">local</span> <span style="color: #0000ff;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
&nbsp;
       <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span>
       <span style="color: #009900;">&#123;</span>
               <span style="color: #0000ff;">$i</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$i</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
               <span style="color: #000066;">local</span> <span style="color: #0000ff;">$temp</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$zr</span> <span style="color: #339933;">*</span> <span style="color: #0000ff;">$zi</span><span style="color: #339933;">;</span>
               <span style="color: #000066;">local</span> <span style="color: #0000ff;">$zr2</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$zr</span> <span style="color: #339933;">*</span> <span style="color: #0000ff;">$zr</span><span style="color: #339933;">;</span>
               <span style="color: #000066;">local</span> <span style="color: #0000ff;">$zi2</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$zi</span> <span style="color: #339933;">*</span> <span style="color: #0000ff;">$zi</span><span style="color: #339933;">;</span>
               <span style="color: #0000ff;">$zr</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$zr2</span> <span style="color: #339933;">-</span> <span style="color: #0000ff;">$zi2</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">$cr</span><span style="color: #339933;">;</span>
               <span style="color: #0000ff;">$zi</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$temp</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">$temp</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">$ci</span><span style="color: #339933;">;</span>
               <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$zi2</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">$zr2</span> <span style="color: #339933;">&gt;</span> <span style="color: #0000ff;">$BAILOUT</span><span style="color: #009900;">&#41;</span>
               <span style="color: #009900;">&#123;</span>
                       <span style="color: #000066;">return</span> <span style="color: #0000ff;">$i</span><span style="color: #339933;">;</span>
               <span style="color: #009900;">&#125;</span>
               <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$i</span> <span style="color: #339933;">&gt;</span> <span style="color: #0000ff;">$MAX_ITERATIONS</span><span style="color: #009900;">&#41;</span>
               <span style="color: #009900;">&#123;</span>
                       <span style="color: #000066;">return</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
               <span style="color: #009900;">&#125;</span>
       <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$y</span> <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">39</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">$y</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">39</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">$y</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
       <span style="color: #000066;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$x</span> <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">39</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">$x</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">39</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">$x</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
       <span style="color: #009900;">&#123;</span>
               <span style="color: #0000ff;">$i</span> <span style="color: #339933;">=</span> mandelbrot<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$x</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">40.0</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$y</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">40.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
               <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$i</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span>
               <span style="color: #009900;">&#123;</span>
                       <span style="color: #000066;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;*&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
               <span style="color: #009900;">&#125;</span>
               <span style="color: #b1b100;">else</span>
               <span style="color: #009900;">&#123;</span>
                       <span style="color: #000066;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot; &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
               <span style="color: #009900;">&#125;</span>
       <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000066;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #0000ff;">$end</span> <span style="color: #339933;">=</span> <span style="color: #000066;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #0000ff;">$begin</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Perl Elapsed %.3fn&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$end</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h3>Commenti:</h3>
<p>La velocità di Lua è ormai nota, solamente 5 volte più lento rispetto al codice java compilato, il miglior risultato. La sua semplicità è la sua forza, forse è proprio questo che lo rende così veloce? E&#8217; stato adottato dalla Blizzard all&#8217;interno del gioco World of Warcraft e se l&#8217;hanno fatto loro un motivo ci sarà. Non è ad oggetti o meglio, nativamente non li supporta anche se c&#8217;è il progetto <a href="http://loop.luaforge.net/">LOOP</a> che lo estende a questo modello di programmazione.<br />
Php e Perl non hanno bisogno di commenti.<br />
Tra le versioni C di Ruby e Python è chiaramente avanti quest&#8217;ultimo. Il paragone equo sarebbe la Rb1.8.6 con la Py2.6.2 e la Rb1.9.1 con la Py3.1.1.<br />
La sfida tra le versioni che sfruttalo la Java VM: Groovy, Jython e JRuby, vede in vantaggio quest&#8217;ultimo. Groovy è molto indietro come prestazioni ma il dubbio più grosso che ho è: ma a chi è destinato? Come sintassi non è male ma ruby è ancora più scorrevole e poi ha quel rake che è tanto comodo per tante cose.<br />
Le versioni ruby e python per .Net vede incredibilmente avanti IronPython! Ma che gli hanno messo dentro, la dinamite? Sarà molto interessante esaminare il nuovo framework MVC di ASP.NET da poco arrivato alla versione 1 e che sarà incluso nel framework .Net 4, esistono progetti sia per IronRuby che per IronPython.<br />
Se questo articolo è risultato interessante, forse potrai trovare qualcos&#8217;altro tra gli annunci del mio sponsor, si trova nella colonna a destra, grazie!</p>
]]></content:encoded>
			<wfw:commentRss>http://mastrodonato.info/index.php/2009/08/comparazione-linguaggi-script-per-la-geometria-frattale/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

