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.