Given a program written from scratch. Profiling and reworking the 
algorithms will speed up the run time by about 50% to 80%. Even then 
rewriting it in C results in a massive improvement.

I had a program that read an image, calculated metrics from the image 
and wrote the data to a database (for a subsequent search application). 
A sort of vector space search for images.

The first shot at the code took around 15 minutes per image.
Profiling and reflecting on the code got this down to 2 to 4 minutes per 
image.
Once the code was worked out I wrote it in C, that came down to 5 
seconds an image.

I had nearly 500,000 images to process. So the Ruby version was never a 
starter for this project but the ease with which I could develop the 
algorithms and tune the various parameters in Ruby saved me countless 
days of C development. I no longer develop code in C from scratch, I 
always start with either Ruby or Perl or Python so that I can test and 
adjust the design.

I am not too sure what the advantages of moving code into C libraries is 
as the program I just described was using the same libraries in C that 
were being used in Ruby (GD and SQLite), unless the bridge between the C 
libraries and Ruby is really crap - which I don't believe.

My latest project involves a Perl program that writes the C program to 
do the work.