Experimental MacRuby Branch Is 3x Faster
An anonymous reader writes "Zen and the Art of Programming published an article about MacRuby's new experimental 0.5 branch (project blog entry here). According to the included benchmarks, Apple's version of Ruby could already, at this early stage of its development, be about three times as fast as the fastest Ruby implementation available elsewhere."
I heard it made a guy in Michigan's head explode! That's why I stay away from the experimental stuff, man.
Why MacRuby Matters (Present & Future)?
Apparently because an experimental incomplete version of Ruby is fast. Colour me unimpressed.
Of course, Slashdot is a dime short and days late on the real news.
JavaScript 3-10x Faster On iPhone OS 3.0
Well, for a better, no BS news aggregator, try The Hacker News. Then after seeing it there for a few days, come to slashdot to see a regurgitated discussion.
This is great news. The work that Apple's doing on LLVM is a renaissance in compilers.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
"LLVM supports effective optimization at compile time, link-time (particularly interprocedural), run-time"
Amazing, truly unique ideas. If only someone had thought of doing this 30 years ago... oh wait...
Those new code contributions by Mr Aznable made all the difference.
Every time a story is posted about Ruby performance improvements, someone will post something along the lines of "x times faster than super ultra duper slow is still slow". Even if Ruby is 1000 times faster, there will still be people complaining. My guess is that none of these people actually use Ruby in production to be able to tell how much interpreter performance actually matters in the grand scheme of things.
Er, way to troll? If you'd like to do your ridiculous hello world you can stick to:
puts "i like beans"
And it's really unclear what "it" you're referring to. Because Ruby, for me, is a good blend of the things i wanted from Perl and Lisp with a side of Object Orientation. I get all the laziness and conveniences of Perl, and i can do all the crazy stuff i'd want to do with Lisp. So imo, you're way off base.
There are lives at stake here!
I wonder if this has any connection to what they learned creating the optimized javascript "interpreter" they made for their next generation rendering engine Webkit.
--------
* Sigh *
Common Lisp is ultra-dynamic and whatnot and still compiles to machine code, which in some implementations (SBCL/CMUCL) is quite respectable in performance. Is there something inherently less-compilable about Python, Ruby, Perl, etc., or have they just not had the same engineering work put into them?
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
I agree with this totally. These days I'm writing exclusively in Ruby and it is "fast enough" (even with 1.8.X). In fact, this speed issue is such a big red herring for me. I hardly ever have any issues with speed. Instead I spend most of my optimization time trying to cut down on memory usage.
For me, even an order of magnitude difference in speed (i.e., 10X) isn't going to mean too much. There are certainly places where I'd like my code to be faster, but they are very, very small places. I can easily code them in C if I have to (C/Ruby bindings are *very* easy to write). But honestly, I've never gotten to the point where a speed improvement is more important than a functionality improvement. Every program is different, of course. So not every problem is suited to Ruby.
Sleep(30); /* used to be 90 */
While the Ruby 1.8 VM is quite slow, the YARV VM used in 1.9 is much faster, resulting in similar performance to most other dynamic languages. These tests are showing MacRuby being 3x faster than 1.9, which puts it in "quite fast" territory.
But I'm a heterosexual so I will not be able to take advantage.
Thanks ;)
You'd be surprised of the multitudes of comments I get on me and my bastardly signature... Well, you could always look at my freaks list to get an inking.
I thought it was rather dryly funny.
Because they don't want to expose high level intermediary code (too easy to hijack part of the compiler into a closed source project). Or at least that was one of the reasons LLVM was rejected for next generation GCC at the time.
They might have changed their mind now LLVM is bearing down on them ...
Any sort of layering is a major cause of bugs/slowdown? Quick, throw out TCP/IP. Everyone start using Ethernet frames directly from their apps, even if what you really want to use is SOAP over HTTP over SSL over TCP over IP... I'm not sure how you will get your Ethernet frames past the first router, but I'm sure you will think of something. Damn layering just gets in the way!
They don't have any particular antipathy to the GPL ... Chriss Lattner proposed LLVM as a GCC successor after starting work at Apple. The FSF kicked him to the curb. I don't know if they underestimated his and Apple's commitment into turning the compiler into a true competitor or if they are simply stupid.
As LLVM gets better GCC will lose developers, this is unavoidable, it's EGCS all over again ... but this time a merge doesn't seem on the cards. It wasn't LLVM but the FSF themselves who torpedoed one of the GPL flagships ... and for very very poor reasons.
So you're suggesting that instead of creating languages like Ruby, we should create libraries to more complex environments like Java to make them faster to develop with? Variety is the spice of programming :). Personally, I'm glad languages like Python and Ruby exist and they are not only great and productive languages, they have both made me rethink the way I write software. I'm not sure just adding on top of Java would have achieved the same thing.
...line. It is disorienting for the people that don't always read the subject line (almost everybody). And capitalizing the first word of the body text when the word takes place in the middle of the sentence doesn't help, either.
These days I'm writing exclusively in Ruby and it is "fast enough" (even with 1.8.X).
I suspect that's because your website doesn't receive thousands of dynamic requests per second.
So, GCC is making what should be technical decisions on a political basis?
Good to know. That's one more reason to be glad when GCC fades away.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
... for them to get further along in completing it... it'll slow down.
Care to bet on that? I've seen 5 minute boot times for XP on end-of-life hardware, primarily due to massive delays in indexing large disk drives. And no, it's not "booted" until it gives you a usable mouse and keyboard. Printing up the Windows boot screen and ignoring you for another few minutes does not count as "booted". Vista is noticeably worse on the same hardware due to the larger memory footprint: Win9x used to be OK on the hardware.
You may not want to believe it, but when GCC came out there was a pretty healthy competition going with plenty of vendors offering C compilers, and driving each other to improve their products. RMS decided to put them out of business, and the upshot was that commercial compiler development came to a screeching halt, with a few exceptions like IBM and Motorola working on their optimizers. There were a few scattered academic projects going on, but GCC wiped out everyone in the compiler business besides microsoft and metrowerks.
Fortunately, one of those academic projects came to Apple's attention, and it's about to bring the dark ages to an end.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
The main effect of GCC for the last 20 years has been to suck all of the air out of the room for anyone else who wanted to develop compilers.
That is one of the most retarded statements I've ever read.
No. What the poster said is true. Also unfair, because GCC is a very useful tool, but it still had a bad influence as well. GCC is extremely useful and produces decent code as well, but it has effectively stifled a lot of C/C++ compiler research. And it seems to become slower with each release. I have a lot of code that was faster with 2.95 than with any 3.x release, and with 4.x it is even slower.
Now, LLVM is still a mixed bag, sometimes code is much faster, sometimes a bit slower, and does not compile everything I throw at it, but it is impressive technology. It has a more modern infrastructure, and finally allows things like compiling to bytecode and dynamic run-time optimisation with C. It may even allow for CPU-independent operating systems in the future, where you have LLVM bytecode in the binaries that will run like natively-compiled code once loaded.
I compiled some C programs _to_ LLVM bytecode and then ran them on my mac.
Their performance was comparable, oftentimes better, than that of the same programs compiled with a recent GCC. And I can still add inline assembler, which then is used only on the right architecture, if I provide C alternatives.
Think about this. This has the potential of *finally* freeing us from dependence on a CPU ISA. It may be an Apple-sponsored project, but we all should be grateful to them that they are actually pushing it.
Roberto
Tell that to MTV and New York Times. Yes, they run Rails. Not on the front page, but nevertheless, they use it on very busy parts of their sites.
And heck, do I even need to mention 37signals? Those guys receive tons and tons of requests per second.
Because puts { "I like beans" } is 9000% better than just typing I like beans.
What a terrible example
1. It's not functioning Ruby (try puts "I like beans", like most languages in fact)
2. It has nothing to do with the strengths or failings of Ruby as a language.
Do you know anything about Ruby? Do your empty platitudes about 'layers upon layers of complexity' actually have any basis in reality? From your comment, I suspect not.
There are some not so nice corners of Ruby, but an attempt to oversimplify is not one of them.
"Thanks, Captain Anecdote, but you've left out even the anecdotal evidence. What's all this exclusive writing you're doing with Ruby? I've been doing all my grocery list work in Ruby too, and it's *totally* fast enough."
I'm not the GP, but New York Times, MTV, Aboutus.com (high-ranking Alexa site), Yellow Pages, are all running Ruby. I'd love to give you even more examples but I've signed NDAs.
"I think Ruby is a fantastic language, but then I see comments like this modded up to 5 that are completely nonsensical. This makes Ruby fandom seem more like Java 1999, which makes me think twice about my positive opinion of it."
I can say the same thing about comments that complain about Ruby's speed without providing any kind evidence that the interpreter's speed is the bottleneck in their application. This makes it seem like bashing Ruby is just the latest fad, which makes it very hard for me to take any of these complaints seriously. If you cry wolf several times then nobody will listen to you anymore.
While that's certainly true, OSS also benefits a lot from Apple. Without Mac OS X, BSD would have 25 million fewer users exercising its code.
Apple also owns CUPS and finances LLVM and WebKit and initiated Darwin Calendar Server and lots of other projects. Had the world not rejected NeXT and Unix to race after Microsoft's vaporware in the 90s, all the effort at reinventing BSD as Linux could have been united into a single OSS effort. So Apple has been working against the tide to return the world back to open, interoperable software.
I think open interoperability is more important that forcing companies to propagate an ideology that only hardware should be marketable.