Mozilla juices Firefox's JavaScript with IonMonkey
news.cnet.com
news.cnet.com
They'll also blog on the upcoming weeks about details of the architecture
I don't get this kind of arguments "if you are serious about X you should go all the way, else forget about it altogether".
You can both be serious about something AND reach some reasonable compromise.
In this case, it is enough that they only allow one JIT that they control and can update/revoke etc immediately.
V8 is still in the lead in 2 (out of 3) of the benchmark suites.
On the other hand, it's pretty interesting to me that we're now in the state where SpiderMonkey wins at Kraken and v8 wins at v8bench. I wonder if there's some unconscious bias involved there, where each test suite contains cases the engine's developers care about the most, so they end up winning that test suite?
Kraken was developed fairly unrelated to SpiderMonkey, so I wouldn't say there's any deliberate bias there — V8 was explicitly optimized for the V8 benchmark suite as a deliberate aim, with several design decisions made to optimize for it, so it's advantage there is unsurprising.
V8 tends to win on stuff that depends on garbage collection since they have a generational collector, and SpiderMonkey only has incremental.
SpiderMonkey wins on some computation workloads because V8 still has a huge limitation where they often have to store floats as individual allocations on the heap (that's the best explanation I can come up with, at least; impossible to tell for sure from the Chrome profiler)
V8 also wins on some use cases that make use of new ES5 features like Object.defineProperty, because their optimizations do a better job with them.
IonMonkey is definitely a big improvement over the previous generation of SpiderMonkey, though. They're closing the gap.
P.S. It's a little hard to measure this stuff because V8 has some optimizations that happen to be perfect for benchmarks but provide a much smaller win for applications (Loop invariant code motion, for one). Nothing naughty going on here, you just need to be aware the numbers are lies.
(Incremental GC was completed recently, for Fx 16: https://bugzilla.mozilla.org/show_bug.cgi?id=641025.)
What it sounds like you're describing is that people are still writing terrible benchmarks. The days of this sort of thing on jsperf being useful are numbered:
function benchmark() { for (var i = 0; i < 1000000; i++) { var result = computationWithNoSideEffects(); } }
Yes, a good compiler will turn that into a noop. And no, that's not being naughty either. It's just a terrible benchmark.
(also, when using crankshaft, doubles in V8 are unboxed and not allocated on the heap).
If the difference is huge then it'll be appreciated if you take those workloads and file bugs based on them.
Each of the major browsers - Chrome, IE, Firefox, Safari, Opera - have benchmarks that they beat the competition at.
Competition has made all of them very fast.
What about IE being multi-process makes the experience with that browser better? Without specificity, this is like me saying X is better than Y because of some attribute of X that Y does not have.
I'm tired of Mozilla coming out with their righteous BS about standards etc. They get distracted by every shiny object (mobile OS, mobile browser) when their flag ship product is in dire need of some love (UI/UX , memory leaks, JS speed, etc.) Part of their goal this year was to close the gap with Chrome, for me I've only seen it widen and I dont think Chrome has improved that much...
Also, I assume you are adding up the memory footprint of all of Chrome's processes? ;)
I'm apposed to hacking the settings and installing 32-bit versions. It should give somewhat acceptable performance out of the box. I'm not adding bandaids, FF has wasted enough of my time.
Also, Mac OS X 10.6 and earlier do not support ASLR for 32-bit applications and ASLR's effectiveness is reduced with a smaller address space.
See Chromium Issue 18323 ("Need more bits: 64-bit Mac version") from 2009: http://crbug.com/18323