TraceMonkey vs SquirrelFish
Friday, August 22, 2008 at 2:44PM With the announcement of TraceMonkey, we saw that SpiderMonkey got a huge improvement. However, in previous benchmarks, SpiderMonkey was still slower than SquirrelFish. So, how does Trace Monkey compare versus SquirrelFish:
Overall, if you aggregate the time for each test, TraceMonkey is about 15% faster. If you do the aggregate speedup, which is the speedup for each test divided by the number of tests, it is about 2.4 x faster. Sometimes TraceMonkey is slower, but give them more than 60 days to hash it out, and I'm sure it'll get faster.

Notes: SquirrelFish and TraceMonkey were with release builds. Tests run on a MacBook Pro 2.4 ghz, 4 gigs of ram, OS X Leopard 10.5.4. TraceMonkey was just pulled about an hour ago. SquirrelFish was last nights SVN.
Good Job Guys. More info on TraceMonkey at Andreas Gal's Blog, Mike Shaver, David Anderson, and for a real visual demo, checkout Mike Schroepfer's blog.
9 Comments | |
Permalink
Benchmarks,
JavaScript,
SquirrelFish,
TraceMonkey,
Tracing 
Reader Comments (9)
Beware that SquirrelFish doesn't compile its VM bytecodes to native code yet (hint: remember Apple sponsors LLVM), and many of the low-hanging-fruit optimizations haven't been implemented at all, while TraceMonkey is already a massive inliner of specialized, native code!! So... The game of leapfrogging has just begun ;)
Haha that is true, however TraceMonkey still has a lot of low hanging fruit as well :). Either way it is good for the web, and it is good to have competition. Should be a fun interesting ride.
Just compiling VM bytecodes for a language like JavaScript doesn't buy you much since you'll still have to emit code that handles all possible execution paths for all possible types. The trick is to reduce run-time type checking by discovering traces with stable types.
Michael, I'm pretty aware of your involvement with Andreas Gal and UC Irvine in general, so I won't dare to dispute your point.
On the other hand, you don't seem to fully realise the potential of LLVM. I suggest that you check it out, and take a peek at this page for some inspiration regarding how dynamic languages are targeting LLVM (the description of the FAUST language is particularly compelling considering the point you brought: http://llvm.org/ProjectsWithLLVM/#faust)
Cheers,
A.
Aggregate speedup? Have you ever heard about geometric mean?
geometric mean? How is that at all relevant here? These opperations are added, not multiplied.
http://portal.acm.org/citation.cfm?id=5673" REL="nofollow">How not to lie with statistics: the correct way to summarize benchmark results
������! � ��������� �������. � ��� �������� ����. ����� ���������� �������, ��� :)
nice site ^) good gob