# Strange difference in performance (30x) between PPC and Intel

**URL:** <https://www.ruby-forum.com/t/strange-difference-in-performance-30x-between-ppc-and-intel/115850>\
**Category:** Ruby\
**Created:** [September 29, 2007, 5:40am UTC](https://www.ruby-forum.com/t/strange-difference-in-performance-30x-between-ppc-and-intel/115850 "2007-09-29T05:40:47Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![julik](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b19c9b/32.png) [@julik](https://www.ruby-forum.com/u/julik)\
**Post date:** [September 29, 2007, 5:40am UTC](https://www.ruby-forum.com/t/strange-difference-in-performance-30x-between-ppc-and-intel/115850/1 "2007-09-29T05:40:47Z")

</div>

Hello Rubytalkers

I have a very odd problem here and thought that I should ask your  
opinion. I got a test suite here

[http://julik.textdriven.com/svn/tools/micro-apps/pasaporte/trunk/test/](http://julik.textdriven.com/svn/tools/micro-apps/pasaporte/trunk/test/)

it’s for a little Camping app for OpenID. This is not PR, I mind you.  
However, I have some issues running it on two of our machines. When I  
run it  
on my staging server:

processor : 0  
vendor\_id : GenuineIntel  
cpu family : 15  
model : 2  
model name : Intel(R) Xeon™ CPU 2.40GHz

The test suite takes 3 seconds to run. Fine is that.

Then I run it on my home G4 (about 700 Mhz).  
It takes 19-26 seconds (20ish). Ok.

Then I make a checkout on my dev machine at work (a quad G5, 5G RAM )  
and run the suite here.

It takes a friggin’ minute.

The test suite does nothing fancy except some crypto. When I do ruby-  
prof both, I see the following at the top of the graph on the G5:

Thread ID: 3348220  
Total: 12.55

%self total self wait child calls name  
22.07 2.77 2.77 0.00 0.00 155 IO#read \<\<\<\<  
this is suspicious!  
4.30 0.54 0.54 0.00 0.00 45  
OpenSSL::BN#mod\_exp  
3.51 0.44 0.44 0.00 0.00 1495 Class::Dir#[]

On the Ubuntu box the same shows:

Thread ID: 3084113660  
Total: 4.92

%self total self wait child calls name  
8.54 0.42 0.42 0.00 0.00 45  
OpenSSL::BN#mod\_exp  
3.86 0.19 0.19 0.00 0.00 155 IO#read

I immediately suspect that something is blocking somewhere. Almost  
anytime I try to see what’s going on by hard-stopping a test with ctrl  
+c I see a reference to  
the ruby-yadis library trying to do an HTTP call.

Now comes the question. How should I proceed to eliminate this  
problem? Mock the hell out of the HTTP calling part of ruby-yadis?

I mean, a quad 64bit machine like that cannot be so slow at running a  
test suite like that and the only processor-dependent  
thing I am using here is OpenSSL (the G5 and the dual xeon come  
pretty close with the openssl-speed test). Did anybody have a problem  
with Net::HTTP waiting too long  
and/or blocking before it fails to make an HTTP connection on OS X?

---

<div class="post-metadata">

**Author:** ![julik](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b19c9b/32.png) [@julik](https://www.ruby-forum.com/u/julik)\
**Post date:** [September 29, 2007, 7:29pm UTC](https://www.ruby-forum.com/t/strange-difference-in-performance-30x-between-ppc-and-intel/115850/2 "2007-09-29T19:29:12Z")

</div>

On 29-sep-2007, at 5:40, Julian T. wrote:

> I have a very odd problem here and thought that I should ask your  
> opinion. I got a test suite here

Ok, figured it out. It was ruby-yadis who, for some reason, was  
getting late timeouts from Net::HTTP (most likely name lookup takes  
too long in our internal network).  
Fixed it with a kludgy workaround (Ruby-Yadis folks get a huge -3 for  
the fact that their HTTP retrieval is hardcoded).
