Sam Smoot wrote:
> On Mar 6, 10:18 pm, Brian Adkins <lojicdotcomNOS... / gmail.com> wrote:
>> Brian Adkins wrote:
>>> When running a test that primarily involves loading up a few MySQL
>>> tables with ActiveRecord objects, I was surprised to see the Ruby CPU
>>> utilization at 93% and the MySQL CPU utilization at 7%. I would expect
>>> this workload to be heavier on MySQL than that.
>>> [...]
>> I just moved my test code into a controller and ran it via:
>>
>> mongrel_rails start -e production
>>
>> Similar CPU characteristics except that Mongrel wasn't able to fully
>> utilize my dual core CPU (I suppose because of the serialization of
>> Rails code due to lack of thread safetyness).
>>
>> So the unit test (1093 records -> table1, 1093 records -> table2, 1
>> record -> table3) took 5.5 seconds to complete and the identical test in
>> a controller with Mongrel in production mode took 27.4 seconds!
>>
>> Yeah, I know I can have a cluster of Mongrel processes, and that's how I
>> run for real, but I'm still a little bummed with these results :(
>>
>> I've switched my company's development from 100% Java to 100% Ruby, and
>> I still believe that was a good decision because of productivity gains
>> and joy, but I do miss some of the runtime performance of Java and the
>> ease with which I could spin up a thread to do some background process.
>> I'm glad BackgrounDRB has been provided, but it's not quite the same.
>>
>> Hopefully future versions of Ruby/Rails will provide some more runtime
>> performance and concurrency - I'd be glad if I could just fork in Rails
>> without trouble, but I don't think that's the case.
>>
>> For now, I don't have more customers than a Core 2 Duo can handle, so
>> it's not exactly on the critical path for me yet :)  In fact, I'm glad
>> MySQL isn't on the critical path because overcoming that seems much more
>> difficult than having a bunch of Apache/Mongrel processes running.
>>
>> Brian
> 
> Ruby is a slowish language right now, but this isn't really Ruby's
> fault. 

Yeah, I remember when I first saw the computer language shootout stats! 
I was bummed that my new favorite language performed so poorly, but then 
I recalled the early days of Java (I started with 1.02) and gained some 
perspective.

> Rails is just incredibly slow, and the problem only seems to be
> getting worse. You could spend some time trying to speed it up, but
> there's some really broad design decisions that make that pretty
> difficult. If you can live with the performance, then I guess I'd just
> do so with the expectation that a future release will improve
> performance. 

I'm pretty sure I can live with the performance - I think a few fast web 
server machines in front of a fast MySQL machine will do fine, and I'm 
not close to needing that yet.

> If you can't, you might try looking into some of the
> alternatives? It's a tough choice...

When I switched from Java to Ruby, I knew I was giving up some runtime 
performance and gaining much in other areas. Then I discovered Lisp and 
realized, "wow, it's powerful *and* fast" :) However, I think it would 
take too much work for me to get a Lisp environment to the point of 
being as productive for me as Ruby on Rails is currently (reminds me of 
Python web dev several years ago, maybe older), and I really do enjoy 
programming in Ruby.

Python is a fair amount quicker than Ruby, but I like Ruby better, and 
the speed difference doesn't appear to be huge - I did get used to the 
white space, but I still don't like it in principle. It's interesting 
that I learned Python first, but at the time (2 to 3 yrs ago), I didn't 
feel the web frameworks were ready, so I jumped into Ruby via Rails 
(common story) and then discovered that I like the feel of the language 
better - it has some warts, but it's still a blast to program in. The 
Python frameworks seem to have progressed significantly since then.

I just took a look at Smalltalk, but despite Seaside's success, I don't 
think it's quite ready (plus I just got away from an IDE heavy 
environment with Eclipse), and despite the super duper IDE capabilities, 
I don't feel it warrants the learning effort for me now - maybe later.

So all in all, I'm pretty darn happy with Ruby/Rails at present. I have 
been on a language research blitz recently though (many, many hours) - I 
think it's motivated by Ruby's strengths and not its weaknesses. The 
logic goes something like this, "I was surprised about how much better 
Ruby is than Java, so I wonder if I could make that kind of jump again" 
- I guess I'm just greedy, not to mention susceptible to "the grass is 
always greener on the other side of the fence"

I must say that everything I've read about Paul Graham's Arc indicates I 
would be very pleased with it. No idea when it will be completed, but 
I'd say it has a great shot at getting some traction.

If there's an alternative I haven't mentioned that you feel is actually 
viable as a contender, feel free to pass it on.

Brian