Maybe I'm slow but it seems to me that the language is never the bottleneck for web applications. It seems to me that the bottleneck is in the db which is language agnostic for all general purposes.
And anything that is slow with just Ruby can be solved by throwing money at it.
Thoughtful and correct IMO. Caching is much more important to get right than backend-speed. Number crunching capability does not matter that much for web applications. And you can always outsource the tough calculations to languages better suited for it: ML, Common Lisp, C++, C, etc.
True I think another bottleneck would be the web server serving the pages. Albeit a distant one as compared to the DB. What I don't get here is what is everyone's obsession with speed and shootout contests. What gives? I think we as developers have to focus on the bigger picture.
To build apps that our users will love.
No matter the language, framework, or whatever. If we miss this point which is a very crucial point for that matter. Then all of our optimizations are for nothing.
To be frank, at this point in time when I'm developing for the web, just about the only thing I care about when it comes to what language I'm using is that it's not PHP.
I understand why people use PHP, but as someone who has a decent amount of experience with a variety of languages, I really want a language that's designed sanely, especially for things like web-(sites|apps). I'll gladly take a hit on the language-speed side, or on the ease-of-finding-hosting side for the sake of not having to put up with PHPs craziness.
Why? For just the reason you pointed out - the vast majority of websites don't get enough traffic to make the language matter. I'd imagine that things like learning how to configure apache and/or a caching tool like memcached would handle most of the performance bottleneck on a site that did get that level of traffic.
Seriously - if a language is "fast" enough to allow the creation of responsive GUI apps, it's "fast" enough for web-apps.
PHP might not be the most elegant in the world, but for a small- to mid-size web application, using a solid PHP5 framework (like KohanaPHP) along with a PHP accelerator and you have an easy-to-use and easy-to-deploy application.
For small to mid-size web apps, I far prefer python and cherrypy (http://www.cherrypy.org). Easier to use, and easier to deploy assuming you have hosting that gives you control over your hosted machine (here's looking at you, slicehost).
quite a few newcomers come to rails and think it's slow, because they're 'doin it wrong'. every framework's speed is really about your deployment setup. running mongrel can be slow, especially if you're load-testing a single mongrel instance. multiple instances can be slow if they're connecting to a slow database and serving static files.
put nginx in front of thin, start caching frequently used objects, and slice up your database and suddenly speed isn't a problem. php has the (perceived) advantage of running compiled in an apache module, typically. but it's a perception -- you have to do a little more tuning with your rails deployment to make it scream, but make no mistake, it can scream, even under heavy load, and without a huge server farm, at least up to 500K pages/day. i know that number because i've served it. quickly.
in radiant. (gasp! yes, with some caching.)
with one database.
it's a lesson i learned working with tomcat back in the day: defaults suck. learn your framework, learn your app server, pick the Right Thing. it's all about application tuning and app-server choice, and that goes for every language and platform in existence.
The white bars are time, the black bars are memory usage. Ergo, in most cases, PHP is running 2-5x faster than Ruby, but using about 3x as much memory.
Thanks for being so pedantic for us. We understand how valuable your time is, and it's quite flattering that you chose to spend it on catching and correcting microscopic ambiguities in our discussions that might have otherwise gone undiscovered.
"Next was comparing Merb against other ruby options. Returning directly from the Merb router kills everything, but there aren’t many scenarios you could use that. Sinatra is just slightly faster than returning from the Merb controller, which both outperform Rails by a 3-4x. Rails itself still kills CakePHP."
And anything that is slow with just Ruby can be solved by throwing money at it.