Hacker News new | ask | show | jobs
by cromwellian 4252 days ago
"This puts us in a position of strength, so we can say "these benchmarks are not very interesting; let's talk about other benchmarks (e.g. asm.js-related) and language features" without being accused of being sore losers."

But are asmjs benchmarks interesting? They are not representative of the vast majority of real-world JS, so wouldn't an asmjs-laden benchmark suite really be a case of optimizing for your own set of benchmarks, tuned to your own idiomatic-JS?

But anyway, congrats on the achievement. I like the fact that V8, JSC, and FF performance are converging. If the performance differential is too great, it creates additional headaches for the developer targeting a certain level of efficiency.

3 comments

Don't look at asm.js benchmarks if you're interested in real-world JS. Look at them if you want to know something about the performance of C++ code transpiled to run in a browser, which is an interesting thing to know. And it's getting to be more and more relevant these days. (Even "real-world JS" is going to start using asm.js libraries, I bet.)

But asm.js execution is very different from JS execution, even in browsers that don't have specialized asm.js paths. Executing regular JS is all about balancing compile time and garbage collection with code execution. asm.js barely uses GC, and allows lots of opportunities to cache compilation in ways that would be invalid for regular JS. So the whole space of tradeoffs is different.

Being representative of "existing real world JS" is one way benchmarks can be interesting. On the other hand, asm.js benchmarks are interesting because improving asm.js performance expands the scope of what the Web can do. Ditto for new language features.
The vast majority of real-world JS don't need JITs to perform adequately, but heavyweight asmjs games are CPU-bound and it makes sense to optimize for them. Watching Firefox creep up on Chrome performance on the arewefastyet.com charts, all JS engines seemed to be converging on some performance asymptote. asmjs changes the rules of the game and break through for specific content.