<?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>Elliott C. Back &#187; Scalability</title>
	<atom:link href="http://elliottback.com/wp/category/computers-technology/web-20/scalability/feed/" rel="self" type="application/rss+xml" />
	<link>http://elliottback.com/wp</link>
	<description>Internet &#38; Technology</description>
	<lastBuildDate>Tue, 03 Nov 2009 23:59:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Excessive Amazon Packaging</title>
		<link>http://elliottback.com/wp/excessive-amazon-packaging/</link>
		<comments>http://elliottback.com/wp/excessive-amazon-packaging/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 23:35:12 +0000</pubDate>
		<dc:creator>Elliott Back</dc:creator>
				<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Scalability]]></category>

		<guid isPermaLink="false">http://elliottback.com/wp/?p=3199</guid>
		<description><![CDATA[I bought two Dap 21500 Plastic Wood Filler, 1.5-Ounce on Amazon.  These tiny little tubes of plastic wood repair kit contain just 1.5 Oz of fluid.  Unfortunately for the environment, Amazon shipped them in two boxes:
I&#8217;m not alone, check out the Excessive Packaging category on Sustainable Is Good.  Fortunately, Amazon is starting [...]]]></description>
			<content:encoded><![CDATA[<p>I bought two <a href="http://www.amazon.com/gp/product/B001AVSYRE?ie=UTF8&#038;tag=elliottback-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=B001AVSYRE">Dap 21500 Plastic Wood Filler, 1.5-Ounce</a> on Amazon.  These tiny little tubes of plastic wood repair kit contain just 1.5 Oz of fluid.  Unfortunately for the environment, Amazon shipped them in two boxes:</p>

<a href='http://elliottback.com/wp/wp-content/uploads/2009/07/img_0071.jpg' title='img_0071'><img width="450" height="306" src="http://elliottback.com/wp/wp-content/uploads/2009/07/img_0071.jpg" class="attachment-thumbnail" alt="" title="img_0071" /></a>
<a href='http://elliottback.com/wp/wp-content/uploads/2009/07/img_0070.jpg' title='img_0070'><img width="450" height="338" src="http://elliottback.com/wp/wp-content/uploads/2009/07/img_0070.jpg" class="attachment-thumbnail" alt="" title="img_0070" /></a>

<p>I&#8217;m not alone, check out the <a href="http://www.sustainableisgood.com/blog/excessive_packaging/">Excessive Packaging</a> category on Sustainable Is Good.  Fortunately, Amazon is starting a <a href="http://www.amazon.com/gp/browse.html/ref=corp_su_/?node=13786331">Frustration-Free Packaging</a> initiative which aims to &#8220;determine the &#8220;right-sized&#8221; box for any given item to be shipped to a customer, based on that item&#8217;s dimensions and weight.&#8221;  You can also leave <a href="http://www.amazon.com/packaging">packaging feedback</a>, something I&#8217;ve just done.</p>
]]></content:encoded>
			<wfw:commentRss>http://elliottback.com/wp/excessive-amazon-packaging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WP Super Cache Benchmark</title>
		<link>http://elliottback.com/wp/wp-super-cache-benchmark/</link>
		<comments>http://elliottback.com/wp/wp-super-cache-benchmark/#comments</comments>
		<pubDate>Sun, 28 Sep 2008 22:38:08 +0000</pubDate>
		<dc:creator>Elliott Back</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Scalability]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://elliottback.com/wp/archives/2008/09/28/wp-super-cache-benchmark/</guid>
		<description><![CDATA[If you&#8217;ve thought about whether upgrading from WP Cache 2.0 to WP Super Cache is a good idea, hopefully this benchmark will convince you.  I followed my instructions on benchmarking Wordpress with Apache Bench on four configurations of this blog&#8217;s main page to measure performance: 

Without any caching plugins
With WP Cache 2.0
With WP Super [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve thought about whether upgrading from <a href="http://mnm.uib.es/gallir/wp-cache-2/">WP Cache 2.0</a> to <a href="http://ocaoimh.ie/wp-super-cache/">WP Super Cache</a> is a good idea, hopefully this benchmark will convince you.  I followed my instructions on <a href="http://elliottback.com/wp/archives/2008/01/14/benchmarking-wordpress-with-apache-bench/">benchmarking Wordpress with Apache Bench</a> on four configurations of this blog&#8217;s main page to measure performance: </p>
<ol>
<li>Without any caching plugins</li>
<li>With WP Cache 2.0</li>
<li>With WP Super Cache (no compression)</li>
<li>With WP Super Cache (compression enabled)</li>
</ol>
<p><img id="image2759" src="http://elliottback.com/wp/wp-content/uploads/2008/09/wp-caching-plugins.png" alt="wp-caching-plugins.png" /></p>
<p>The results show that <strong>WP Super Cache</strong> is a clear winner, performing 225% better than the older WP Cache.  Here is the raw data I gathered during the test:</p>
<blockquote><p><strong>No caching:</strong><br />
Requests per second:    22.81 [#/sec] (mean)<br />
Time per request:       4383.559 [ms] (mean)<br />
Time per request:       43.836 [ms] (mean, across all concurrent requests)<br />
Transfer rate:          613.75 [Kbytes/sec] received</p>
<p><strong>WP cache:</strong><br />
Requests per second:    872.30 [#/sec] (mean)<br />
Time per request:       114.640 [ms] (mean)<br />
Time per request:       1.146 [ms] (mean, across all concurrent requests)<br />
Transfer rate:          23549.46 [Kbytes/sec] received</p>
<p><strong>Super cache (no compression):</strong><br />
Requests per second:    1518.90 [#/sec] (mean)<br />
Time per request:       65.837 [ms] (mean)<br />
Time per request:       0.658 [ms] (mean, across all concurrent requests)<br />
Transfer rate:          41150.81 [Kbytes/sec] received</p>
<p><strong>Super cache (compression):</strong><br />
Requests per second:    1960.39 [#/sec] (mean)<br />
Time per request:       51.010 [ms] (mean)<br />
Time per request:       0.510 [ms] (mean, across all concurrent requests)<br />
Transfer rate:          53108.70 [Kbytes/sec] received</p></blockquote>
<p>For more tips on how to improve your Wordpress performance, check out <a href="http://elliottback.com/wp/archives/2007/04/15/why-my-wordpress-site-is-so-much-faster-than-yours/">Wordpress Performance: Why My Site Is So Much Faster Than Yours</a>. Another interesting WP caching plugin is <a href="http://wordpress.org/extend/plugins/batcache/">Batcache</a>, which uses the memcached backend to serve requests out of a cluster of machines&#8217; RAM memory.</p>
]]></content:encoded>
			<wfw:commentRss>http://elliottback.com/wp/wp-super-cache-benchmark/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>How many users does DIGG have?</title>
		<link>http://elliottback.com/wp/how-many-users-does-digg-have/</link>
		<comments>http://elliottback.com/wp/how-many-users-does-digg-have/#comments</comments>
		<pubDate>Sun, 03 Feb 2008 19:34:58 +0000</pubDate>
		<dc:creator>Elliott Back</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Quantitative]]></category>
		<category><![CDATA[Scalability]]></category>
		<category><![CDATA[Science]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://elliottback.com/wp/archives/2008/02/03/how-many-users-does-digg-have/</guid>
		<description><![CDATA[When John Graham-Cumming asked the question How Many Users Does Digg Have?, there were a few things he couldn&#8217;t tell you, since his data consisted of randomly self-sampled users.  Well, with the power of two PHP scripts, we can pull large amounts of user data and form queries.  Our first question is how [...]]]></description>
			<content:encoded><![CDATA[<p>When John Graham-Cumming asked the question <a href="http://www.jgc.org/blog/2008/01/how-many-users-does-digg-have.html">How Many Users Does Digg Have?</a>, there were a few things he couldn&#8217;t tell you, since his data consisted of randomly self-sampled users.  Well, with the power of two PHP scripts, we can pull large amounts of user data and form queries.  Our first question is how has DIGG grown over time?</p>
<p><img id="image2542" src="http://elliottback.com/wp/wp-content/uploads/2008/02/digg-users-over-time.png" alt="digg-users-over-time.png" /><br />
<small>A graph of 187,054 digg users, randomly plotted against when they joined</small></p>
<p>This doesn&#8217;t tell us much, though, about how many DIGG users there actually are, or how active they are, so I plotted a histogram of the number of times these 200k users&#8217; profiles had been viewed; the answer, unsurprisingly, is not very often in most cases:</p>
<p><img id="image2543" src="http://elliottback.com/wp/wp-content/uploads/2008/02/digg-profile-views-histogram.png" alt="digg-profile-views-histogram.png" /><br />
<small>83% of users had less than 50 profile views</small></p>
<p>And what about users who are active?  How many people are digging stories every day?  The answer is very few.  I took a sample of 29,225 users from the previous sample (randomly) and used the DIGG API to query for their last digg.  It turns out 31% (9125) had never dugg anything!  After I removed those, here is the histogram I got:</p>
<p><img id="image2544" src="http://elliottback.com/wp/wp-content/uploads/2008/02/digg-last-dugg.png" alt="digg-last-dugg.png" /><br />
<small>About 15% of Digg users dugg a story in the last week</small></p>
<p><strong>Concluding thoughts</strong></p>
<p>Digg boasts an official tally of 2.2M users, but at most 20% of them can be considered real, active users.  That would bring their user count down to 440,000, far far less than a popular web 2.0 boom child can boast about, and significantly hurting that $300M (or ~$700 a user) valuation that they keep trying to get.</p>
<p><strong>Code Appendix</strong></p>
<p>The {digg user, time joined, digg id, profile page views} information was gathered by the following script:</p>
<p><span style="color: #0000BB">&lt;?php<br />&nbsp;&nbsp;&nbsp;&nbsp;error_reporting</span><span style="color: #007700">(</span><span style="color: #0000BB">E_ALL</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">ini_set</span><span style="color: #007700">(</span><span style="color: #DD0000">&#8216;user_agent&#8217;</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">&#8216;My-Application/2.5&#8242;</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">ini_set</span><span style="color: #007700">(</span><span style="color: #DD0000">&#8220;include_path&#8221;</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">&#8220;.:/usr/share/pear&#8221;</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;require_once&nbsp;</span><span style="color: #DD0000">&#8216;Services/Digg.php&#8217;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;require_once&nbsp;</span><span style="color: #DD0000">&#8216;Services/Digg/Response/php.php&#8217;</span><span style="color: #007700">;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$base&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">&#8216;http://services.digg.com/users/?appkey=http://example.com&amp;type=php&#8217;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$data&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">unserialize</span><span style="color: #007700">(</span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">$base</span><span style="color: #007700">.</span><span style="color: #DD0000">&#8216;&amp;count=0&#8242;</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$total&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$data</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">total</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">&#8220;There&nbsp;are&nbsp;$total&nbsp;total&nbsp;users\n&#8221;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">&#8220;ID,Number,Name,Date,Views\n&#8221;</span><span style="color: #007700">;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;for(</span><span style="color: #0000BB">$i&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">$i&nbsp;</span><span style="color: #007700">&lt;&nbsp;</span><span style="color: #0000BB">1000</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">$i</span><span style="color: #007700">++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$offset&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">rand</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$total&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">100</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$data&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">unserialize</span><span style="color: #007700">(@</span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">$base</span><span style="color: #007700">.</span><span style="color: #DD0000">&#8216;&amp;count=100&amp;offset=&#8217;</span><span style="color: #007700">.</span><span style="color: #0000BB">$offset</span><span style="color: #007700">));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$j&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach(</span><span style="color: #0000BB">$data</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">users&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$user</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$page&nbsp;</span><span style="color: #007700">=&nbsp;@</span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #DD0000">&#8216;http://digg.com/users/&#8217;</span><span style="color: #007700">.</span><span style="color: #0000BB">$user</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">name</span><span style="color: #007700">.</span><span style="color: #DD0000">&#8216;/&#8217;</span><span style="color: #007700">);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!</span><span style="color: #0000BB">$page</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">preg_match</span><span style="color: #007700">(</span><span style="color: #DD0000">&#8216;/id=&#8221;userid&#8221;&nbsp;value=&#8221;(\d+)&#8221;/i&#8217;</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$page</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$matches</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000BB">$matches</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">&#8220;,&#8221;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;(</span><span style="color: #0000BB">$offset&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">$j</span><span style="color: #007700">++)&nbsp;.&nbsp;</span><span style="color: #DD0000">&#8220;,&#8221;</span><span style="color: #007700">;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000BB">$user</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">name&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">&#8220;,&#8221;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000BB">$user</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">registered&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">&#8220;,&#8221;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000BB">$user</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">profileviews&nbsp;</span><span style="color: #007700">.</span><span style="color: #DD0000">&#8220;\n&#8221;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #0000BB">?&gt;</span></p>
]]></content:encoded>
			<wfw:commentRss>http://elliottback.com/wp/how-many-users-does-digg-have/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby vs PHP Performance Revisited</title>
		<link>http://elliottback.com/wp/ruby-vs-php-performance-revisited/</link>
		<comments>http://elliottback.com/wp/ruby-vs-php-performance-revisited/#comments</comments>
		<pubDate>Fri, 18 Jan 2008 01:24:34 +0000</pubDate>
		<dc:creator>Elliott Back</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Scalability]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://elliottback.com/wp/archives/2008/01/17/ruby-vs-php-performance-revisited/</guid>
		<description><![CDATA[Ignoring any of Hongli Lai&#8217;s actual code, I reran the PHP, Ruby, C++, Perl, and Python mergesort benchmarks he gave, and came up with substantially different results.  Here are the versions of the programming languages I am using for the test:

PHP &#8211; PHP 5.1.6 (cli) (built: Sep 18 2007 09:07:28)
Ruby &#8211; ruby 1.8.5 (2007-09-24 [...]]]></description>
			<content:encoded><![CDATA[<p>Ignoring any of <a href="http://izumi.plan99.net/blog/index.php/2008/01/17/ruby-vs-php-performance/">Hongli Lai&#8217;s actual code</a>, I reran the PHP, Ruby, C++, Perl, and Python mergesort benchmarks he gave, and came up with substantially different results.  Here are the versions of the programming languages I am using for the test:</p>
<ul>
<li>PHP &#8211; PHP 5.1.6 (cli) (built: Sep 18 2007 09:07:28)</li>
<li>Ruby &#8211; ruby 1.8.5 (2007-09-24 patchlevel 114) [x86_64-linux]</li>
<li>Perl &#8211; This is perl, v5.8.8 built for x86_64-linux-thread-multi</li>
<li>Python &#8211; Python 2.4.4 (#1, Oct 23 2006, 13:58:18)</li>
<li>C++ &#8211; gcc version 4.1.2 20070626 (Red Hat 4.1.2-13)</li>
<li>Java &#8211; Java(TM) SE Runtime Environment (build 1.6.0_10-ea-b10)</li>
</ul>
<p>You&#8217;ll notice I&#8217;m adding Java into the mix for fun.  Here&#8217;s the results, over 10 runs, on an Intel Dual-core 1.80GHz machines with 2Gb of RAM currently running this website:</p>
<p><img id="image2534" src="http://elliottback.com/wp/wp-content/uploads/2008/01/mergesort-performance.png" alt="mergesort-performance.png" /></p>
<pre>Lang	Average	Min	Max
PHP	8.8325	8.637	9.303
Ruby	7.2896	7.143	7.729
Perl	4.3231	4.262	4.428
Python	3.3465	3.289	3.417
C++	0.5638	0.53	0.609
Java	0.4062	0.262	0.551</pre>
<p>There are a couple important conclusions to note here that are significantly different than Hongli Lai&#8217;s:</p>
<ul>
<li>PHP is 21% slower than Ruby, not 41% as in his benchmark</li>
<li>Python is 29% faster than Perl, not 17% as in his benchmark</li>
<li>Java runs this 39% faster than C++, and 2100% faster than PHP</li>
</ul>
<p>So, PHP is slower than Ruby, but not quite as slow as Hongli Lai would have you believe.  Python is the fastest scripting language in this benchmark, while Java is the faster language all around, and is incredibly, incredibly fast.  Maybe all of our code should start using java!</p>
<blockquote><p><small>* NOTE:  I am ignoring the obvious deficiencies of this micro-benchmark and just trying to reduplicate it.  What I&#8217;ve found is that there are significant discrepancies between Hongli Lai&#8217;s run of the tests and my own, probably owing to slightly different versions of the components involved.  Also, if I make some trivial optimizations to the loops in the PHP script, I can get it to run faster than everything but C++, in about 2.4s.  Then again, just calling <em>sort()</em> is faster by another two orders&#8230; but still half as slow as Java&#8217;s built-in sort&#8230; and two orders slower than perl&#8217;s built-in.</small></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://elliottback.com/wp/ruby-vs-php-performance-revisited/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Benchmarking Wordpress with Apache Bench</title>
		<link>http://elliottback.com/wp/benchmarking-wordpress-with-apache-bench/</link>
		<comments>http://elliottback.com/wp/benchmarking-wordpress-with-apache-bench/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 22:38:09 +0000</pubDate>
		<dc:creator>Elliott Back</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Scalability]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://elliottback.com/wp/archives/2008/01/14/benchmarking-wordpress-with-apache-bench/</guid>
		<description><![CDATA[A lot of people talk about Wordpress performance, and how to get a webserver to perform as efficiently as possible.  However, without a quantifiable methodology to testing website performance, you can&#8217;t actually talk about it.  ApacheBench (ab) is the solution to the problem of measuring website performance.  What is ApacheBench?  The [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of people talk about Wordpress performance, and how to get a webserver to perform as efficiently as possible.  However, without a quantifiable methodology to testing website performance, you can&#8217;t actually talk about it.  ApacheBench (ab) is the solution to the problem of measuring website performance.  What is ApacheBench?  The man page provides a suitable answer:</p>
<blockquote><p>ab &#8211; Apache HTTP server benchmarking tool</p>
<p>ab  is  a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed to give you an  impression  of  how  your current  Apache  installation  performs.  This especially shows you how many requests per second your Apache installation is capable  of  serving.</p></blockquote>
<p>If you have installed apache or apache-devel, you should be to simple invoke <em>ab</em> by typing it on the command line.  For example, to benchmark my own site here, I would write:</p>
<p><code> [root ~]# ab -n 10000 -c 100 http://elliottback.com/wp/ </code></p>
<p>This says &#8220;make 10,000 concurrent requests to host elliottback.com via http and request /wp/ on 100 threads.&#8221;  The result of this is the following report:</p>
<blockquote><p>This is ApacheBench, Version 2.0.40-dev < $Revision: 1.146 $> apache-2.0<br />
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/<br />
Copyright 2006 The Apache Software Foundation, http://www.apache.org/</p>
<p>Benchmarking elliottback.com (be patient)<br />
Completed 1000 requests<br />
Completed 2000 requests<br />
Completed 3000 requests<br />
Completed 4000 requests<br />
Completed 5000 requests<br />
Completed 6000 requests<br />
Completed 7000 requests<br />
Completed 8000 requests<br />
Completed 9000 requests<br />
Finished 10000 requests</p>
<p>Server Software:        Apache/2.2.6<br />
Server Hostname:        elliottback.com<br />
Server Port:            80</p>
<p>Document Path:          /wp/<br />
Document Length:        34331 bytes</p>
<p>Concurrency Level:      100<br />
Time taken for tests:   13.596345 seconds<br />
Complete requests:      10000<br />
Failed requests:        0<br />
Write errors:           0<br />
Total transferred:      346230000 bytes<br />
HTML transferred:       343310000 bytes<br />
Requests per second:    735.49 [#/sec] (mean)<br />
Time per request:       135.963 [ms] (mean)<br />
Time per request:       1.360 [ms] (mean, across all concurrent requests)<br />
Transfer rate:          24868.08 [Kbytes/sec] received</p>
<p>Connection Times (ms)<br />
              min  mean[+/-sd] median   max<br />
Connect:        0    0   1.6      0      20<br />
Processing:     8  134  12.7    132     190<br />
Waiting:        4  134  12.7    132     190<br />
Total:         16  134  12.1    132     190</p>
<p>Percentage of the requests served within a certain time (ms)<br />
  50%    132<br />
  66%    134<br />
  75%    136<br />
  80%    137<br />
  90%    145<br />
  95%    160<br />
  98%    175<br />
  99%    179<br />
 100%    190 (longest request)</p></blockquote>
<p>According to these numbers, my dual core server can do 750 requests per second, fulfilling each within about 150ms each.  That&#8217;s pretty fast, probably because I know the secrets of <a href="http://elliottback.com/wp/archives/2007/04/15/why-my-wordpress-site-is-so-much-faster-than-yours/">Wordpress Optimization</a>.  If you make every layer as fast as it can be, and cache heavily, you too can see lightening fast Wordpress installations!</p>
]]></content:encoded>
			<wfw:commentRss>http://elliottback.com/wp/benchmarking-wordpress-with-apache-bench/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.527 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2009-11-22 02:19:35 -->
<!-- Compression = gzip -->