I'd find it hard to believe that Goog would make the same mistake after all the hullaballoo, but I'd love to see it validated.
Reading sentences like this scare me because it reminds me that some people don't know what the 'var' keyword means or think it's acceptable to shove everything in window or global.
What the IE team got wrong was the assumptions they made about the semantics of the code that was optimized. If they had checked for the presence of a valueOf property, they could still have done the optimization.
In essence I'm asking if Google does in fact do this check, and does analysis to ensure that the valueOf method doesn't get written dynamically in the loop itself.
Does this mean Crankshaft includes a tracing JIT like Firefox? This layman speak confuses me.
In other words, they're paving the way for the future more so than trying to squeeze every last ounce of speed from current applications (which just happens to be a great side effect of their work).
"A good hockey player plays where the puck is. A great hockey player plays where the puck is going to be." — Wayne Gretzky
Canvas and WebGL games.
I had assumed we were reaching some theoretical upper-bound because all major frameworks were on par in terms of performance.
That's not necessarily the whole answer and I imagine JS can't ever quite go that fast. But still....
I'm not the most knowledgeable person on the subject, but from what i understand, there is no theoretical reason that JS couldn't go that fast. The two languages are more similar than they are different, even if JavaScript is quite more complex.
I remember Mike Pall saying something similar in an LTU thread some time ago.
I'm not familiar with Lua, beyond reading an article or two about it, but does its simplicity imply some sort of maximal efficiency? Are the developers behind Lua simply the best programmers in the world and already have everything figured out with regard to optimizing a JIT? I'm not arguing with you...it does seem like that's a reasonable goal for JavaScript JITs to strive for in the near future. But, it doesn't really answer the question of how much better performance can get (in JavaScript or Lua or any other language). Past performance is not necessarily indicative of future performance when so many people are working on the problem from so many angles.
There's no theoretical limit to how close a compiler can come to a programmer when it comes to generating machine code to do a particular well-defined task.
It looks like Chrome 8 went stable on 12/2. So we'll see Chrome 10 in 4 months?
The releases are overlapped though, so we are testing v n+1 in beta while v n is in stable, and we are starting new feature development for v n+2 while v n is in stable.
Chrome 8 just went stable, and we've just started testing Chrome 9.
So crankshaft will either be 6 weeks from today (if it's in 9), or 12 weeks from now (if it's in 10).
I don't think it's been announced which it's targeted for.
HTH
Sage (a open source replacement for matlab) uses it quite successfully for speeding up critical paths.
Check out: https://www.cloudkick.com/blog/2010/aug/23/writing-nodejs-na...
http://www.syntensity.com/toplevel/intensityengine/
worked out very well there.
Of course the real examples are... web browsers, which are C++ apps that are scripted by a JavaScript engine. Seems to work good there as well ;)
From what I understand, the significant improvements in speed come from Crankshafts tradeoff of compilation optimisation for startup speed. If your app is a for loop with 2 iterations that code path won't be heavily optimised as the interpreter would potentially be more spending more time compilation code than in execution of unoptimised code. It will therefore startup faster. However, hotspots (loops with 1,000 iterations, per se) will be heavily optimised.
This is great for websites as speed and responsiveness is perceived as startup time. You'll certainly notice a difference when using the Node as a scripting tool. However, most Node applications are long running servers executing the same code paths over and over. Its unlikely that Crankshaft is performing any extra optimisations, it is just changing when it performs these optimisations. However, if Crankshaft _is_ doing significantly more advanced optimisations (I don't know) then, yes, Node will benefit. Please correct me if I am wrong, I would love to be.