This post was written by David Mandelin who works on Mozilla’s JavaScript team.

Firefox 3.5 introduced TraceMonkey, our new JavaScript engine that traces loops and JIT compiles them to native (x86/ARM) code. Many JavaScript programs ran 3-4x faster in TraceMonkey compared to Firefox 3. (See our previous article for technical details.)

For JavaScript performance in Firefox 3.6, we focused on the areas that we thought needed further improvement the most:

  • Some JavaScript code was not trace-compiled in Firefox 3.5. Tracing was disabled by default for Firefox UI JavaScript and add-on JavaScript, so those programs did not benefit from tracing. Also, many advanced JavaScript features were not trace-compiled. For Firefox 3.6, we wanted to trace more programs and more JS features.
  • Animations coded with JavaScript were often choppy because of garbage collection pauses. We wanted to improve GC performance to make pauses shorter and animations smoother.

In this article, I’ll explain the most important JS performance improvements that come with Firefox 3.6. I’ll focus on listing what kinds of JS code get faster, including sample programs that show the improvements Fx3.6 makes over Fx3.5.

JIT for Browser UI JavaScript

Firefox runs JavaScript code in one of two contexts:content and chrome (no relation to Google Chrome). JavaScript that is part of web content runs in a content context. JavaScript that is part of the browser UI or browser add-ons runs in a chrome context and has extra privileges. For example, chrome JS can alter the main browser UI, but content JS is not allowed to.

The TraceMonkey JIT can be enabled or disabled separately for content and chrome JS using about:config. Because bugs affecting chrome JS are a greater risk for security and reliability, in Firefox 3.5 we chose to disable the JIT for chrome JS by default. After extensive testing, we’ve decide to enable the JIT for chrome JS by default, something we did not have time to fully investigate for Fx3.5. Turning on the JIT for chrome should make the JS behind the Firefox UI and add-ons run faster. This difference is probably not very noticeable for general browser usage, because the UI was designed and coded to perform well with the older JS engines. The difference should be more noticeable for add-ons that do heavy JS computation.

Option Fx3.5 Default Fx3.6 Default
javascript.options.jit.chrome false true
javascript.options.jit.content true true
about:config options for the JIT

Garbage Collector Performance

JavaScript is a garbage-collected language, so periodically the JavaScript engine must reclaim unused memory. Our garbage collector (GC) pauses all JavaScript programs while it works. This is fine as long as the pauses are “short”. But if the pauses are even a little too long, they can make animations jerky. Animations need to run at 30-60 frames per second to look smooth, which means it should take no longer than 17-33 ms to render one frame. Thus, GC pauses longer than 40 ms cause jerkiness, while pauses under 10 ms should be almost unnoticeable. In Firefox 3.5, pause times were noticeably long, and JavaScript animations are increasingly common on the web, so reducing pause times was a major goal for JavaScript in Firefox 3.6.

Demo: GC Pauses and Animation

Demo.
The spinning dial animation shown here illustrates pause times. Besides animating the dial, this demo creates one million 100-character strings per second, so it requires frequent GC. The frame delay meter gives the average time between frames in milliseconds. The estimated GC delay meter gives the average estimated GC delay, based on the assumption that if a frame has a delay of 1.7 times the average delay or more, then exactly one GC ran during that frame. (This procedure may not be valid for other browsers, so it is not valid for comparing different browsers. Note also that the GC time also depends on other live JavaScript sessions, so for a direct comparison of two browsers, have the same tabs open in each.) On my machine, I get an estimated GC delay of about 80 ms in Fx3.5, but only 30 ms in Fx3.6.

But it’s a lot easier to see the difference by opening the demo in Fx3.5, watching it a bit, and then trying it in Fx3.6.
In Fx3.5, I see frequent pauses and the animation looks noticeably jerky. In Fx3.6, it looks pretty smooth, and it’s hard for me even to tell exactly when the GC is running.

How Fx3.6 does it better. We’ve made many improvements to the garbage collector and memory allocator. I want to give a little more technical details on the big two changes that really cut our pause times.

First, we noticed that a large fraction of the pause time was spent calling free to reclaim the unused memory. We can’t do much to make freeing memory faster, but we realized we could do it on a separate thread. In Fx3.6, the main JS thread simply adds unused memory chunks to a queue, and another thread frees them during idle time or on a separate processor. This means machines with 2 or more cores will benefit more from this change. But even when one core, freeing might be delayed to an idle time when it will not affect scripts.

Second, we knew that in Fx3.5 running GC clears out all the native code compiled by the JIT as well as some other caches that speed up JS. The reason is that the tracing JIT and GC did not know about each other, so if the GC ran, it might reclaim objects being used by a compiled trace. The result was that immediately after a GC, JS ran a bit slower as the caches and compiled traces were built back up. This would be experienced as either an extended GC pause or a brief hiccup of slow animation right after the GC pause. In Fx3.6, we taught the GC and the JIT to work together, and now the GC does not clear caches or wipe out native code, so it resumes running normally right after GC.

Tracing More JavaScript Constructs

In my article on TraceMonkey for the Fx3.5 release, I noted that certain code constructs, such as the arguments object, were not traced and did not get performance improvements from the JIT. A major goal for JS in Fx3.6 was to trace more stuff, so more programs can run faster. We do trace more stuff now, in particular:

  • DOM Properties. DOM objects are special and harder for the trace compiler to work with. For Fx3.5, we implemented tracing of DOM methods, but not DOM properties. Now we trace DOM properties (and other “native” C++ getters and setters) as well. We still do not trace scripted getters and setters.
  • Closures. Fx3.5 traced only a few operations involving closures (by which I mean functions that refer to variables defined in lexically enclosing functions). Fx3.6 can trace more programs that use closures. The main operation that is still not traced yet is creating an anonymous function that modifies closure variables. But calling such a function and actually writing to the closure variables are traced.
  • arguments. We now trace most common uses of the arguments keyword. “Exotic” uses, such as setting elements of arguments, are not traced.
  • switch. We have improved performance when tracing switch statements that use densely packed numeric case labels. These are particularly important for emulators and VMs.

These improvements are particularly important for jQuery and Dromaeo, which heavily use arguments, closures, and the DOM. I suspect many other complex JavaScript applications will also benefit. For example, we recently heard from the author that this R-tree library performs much better in Fx3.6.

Here is a pair of demos of new things we trace. The first sets a DOM property in a loop. The second calls a sum function implemented with arguments I get a speedup of about 2x for both of them in Fx3.6 vs. Fx3.5.

Demo: Fx3.6 Tracing DOM properties and arguments


DOM Property Set:

Sum using arguments:

String and RegExp Improvements

Fx3.6 includes several improvements to string and regular expression performance. For example, the regexp JIT compiler now supports a larger class of regular expressions, including the ever-popular w+. We also made some of our basic operations faster, like indexOf, match, and search. Finally, we made concatenating sequences of several strings inside a function (a common operation in building up HTML or other kinds of textual output) much faster.

Technical aside on how we made string concatenation faster: The C++ function that concatenates two strings S1 and S2 does this: Allocate a buffer big enough to hold the result, then copy the characters of S1 and S2 into the buffer. To concatenate more than two strings, as in JS s + "foo" + t, Fx3.5 simply concatenates two at a time from left to right.

Using the Fx3.5 algorithm, to concatenate N strings each of length K, we need to do N-1 memory allocations, and all but one of them are for temporary strings. Worse, the first two input strings are copied N-1 times, the next one is copied N-2 times, and so on. The total number of characters copied is K(N-1)(N+2)/2, which is O(N^2).

Clearly, we can do a lot better. The minimum work we can do is to copy each input string exactly once to the output string, for a total of KN characters copied. Fx3.6 achieves this by detecting sequences of concatenation in JS programs and combining the entire sequence into one operation that uses the optimal algorithm.

Here are a few string benchmarks you can try that are faster in Fx3.6:

Demo: Fx3.6 String Operations


/w+/:

indexOf('foo'):

match('foo'):

Build HTML:

Final Thoughts and Next Steps

We also made a lot of little improvements that don't fit into the big categories above. Most importantly, Adobe, Mozilla, Intel, Sun, and other contributors continue to improve nanojit, the compiler back-end used by TraceMonkey. We have improved its use of memory, made trace recording and compiling faster, and also improved the speed of the generated native code. A better nanojit gives a boost to all JS that runs in the JIT.

There are two big items that didn't make the cut for Fx3.6, but will be in the next version of Firefox and are already available in nightly builds:

  • JITting recursion. Recursive code, like explicit looping code, is likely to be hot code, so it should be JITted. Nightly builds JIT directly recursive functions. Mutual recursion (g calls f calls g) is not traced yet.
  • AMD x64 nanojit backend. Nanojit now has a backend that generates AMD x64 code, which gives the possibility of better performance on that plaform.

And if you try a nightly build, you'll find that many of these demos are already even faster than in Fx3.6!

85 comments

Post a comment
  1. fabrice wrote on January 13th, 2010 at 10:37 am:

    Great post !

    Is there any tool available to check if an extension’s code is being traced or not ?

    Reply

    1. Dave Mandelin wrote on January 13th, 2010 at 6:17 pm:

      There is a tool we use for that, TraceVis, which I blogged about earlier on my personal blog, but it’s not enabled in standard browser builds. We want to get it enabled, possibly in a special build with an extension, but we haven’t had the time to do that. If you’re brave, it’s possible to patch the source code and then build a browser that would have TraceVis in it. Email me for help if you want to try that.

      Reply

  2. Nice Try wrote on January 13th, 2010 at 10:47 am:

    Nice try, but Chrome and V8 still significantly outperform Tracemonkey. In addition, I still see animation pauses for garbage collection, whereas, it’s completely smooth in Chrome.

    Reply

  3. sep332 wrote on January 13th, 2010 at 10:51 am:

    x64 JIT? Is this feature available in Windows nightlies, or do I have to manually build for 64-bit Windows?

    Reply

  4. Zorkzero wrote on January 13th, 2010 at 11:17 am:

    Just tried the benchmark on http://stackulator.com/rtree/ . Firefox 3.6rc1 fails when “Deleting 1k elements..” with the following message:
    Error: b is undefined
    Source: http://stackulator.com/rtree/rtree.js
    Line: 689

    Firefox 3.5.7 completes all test just fine. That’s on Windows XP SP3.

    Reply

    1. Dave Mandelin wrote on January 13th, 2010 at 6:22 pm:

      Which exact page do you get that error on? I clicked “Benchmark”, which led to http://stackulator.com/rtree/numbers.html. It ran to completion for me without JS errors on Vista with 3.6rc1.

      Reply

      1. Zorkzero wrote on January 14th, 2010 at 7:45 am:

        I get it on http://stackulator.com/rtree/numbers.html . I have even created a new, clean profile and I still get the same error.

        When I start with “-safe-mode” the benchmarks completes fine. So it must be one of these extensions: “Java Console 6.0.18″, “Java Quick Starter 1.0″ “Microsoft .NET Framework Assistant”. Even if I disable all these extensions I still get the error. I can’t uninstall any of them, the “Uninstall” button is grayed out.

        Reply

        1. Jamie Penney wrote on January 24th, 2010 at 2:16 pm:

          I can confirm this fails for me with the same error using Firefox 3.6 on 32 bit Windows 7.

          Reply

        2. Max wrote on January 24th, 2010 at 3:14 pm:

          On 3.6 that test never finishes for me. It just says “Deleting 1k items”. On chrome it runs to completion.

          Reply

  5. Ted Mielczarek wrote on January 13th, 2010 at 11:42 am:

    sep332: We do not currently have 64-bit Windows nightlies. Our Windows nightlies are 32-bit, and use the x86 JIT backend.

    Reply

  6. Boris wrote on January 13th, 2010 at 12:57 pm:

    sep332, you’d need to be using a 64-bit build to use it. I don’t think we currently have 64-bit Windows nightlies.

    Reply

  7. TNO wrote on January 13th, 2010 at 1:58 pm:

    In regards to regular expressions, the tokens “\s”, “\S”, “.”, “^”, and “$” are Unicode aware. Is there an optimization in place that can recognize whether a string actually contains any non-ASCII characters? If not, couldn’t this ability potentially allow the use of far fewer character comparisons?

    Reply

  8. Alex Vincent wrote on January 13th, 2010 at 3:14 pm:

    I’d suggest you look at your post on planet.mozilla.org – the text is overlapping with a couple other posts there…

    Reply

    1. Alix Franquet wrote on January 13th, 2010 at 4:13 pm:

      Alex: thanks for letting us know! Looking into it now.

      Reply

  9. Drazick wrote on January 13th, 2010 at 5:16 pm:

    When will FF offer the same performance as Safari, Chrome and lately even Opera?

    Thanks.

    Reply

  10. David wrote on January 13th, 2010 at 5:59 pm:

    I’m getting Est GC delay: 2255ms using FF3.5 64bit on Ubuntu. Not sure if the slowdown is because of XULRunner’s crap performance on Linux or if it’s purely because it’s using the old JS engine. Will FF 3.6 64 have tracemonkey?

    Also, you’ll want to fix the email validation on this form. Doesn’t work with valid email addresses like yourname+mozilla@example.com.

    Reply

  11. Question wrote on January 13th, 2010 at 10:31 pm:

    nightly 20091213 vs chrome3
    gc delay:100ms vs 6ms

    Reply

  12. Transcontinental wrote on January 14th, 2010 at 12:47 am:

    Frankly – I’ve compared speed of page layout (including heavily scripted pages) with JIT (chrome & content) on FF 3.6 RC and Google Chrome, and I really perceive no difference. I did with Firefox 3.5.7 (JIT content AND chrome as well with no problem), but Firefox 3.6 RC is really – objectively – very fast, and smooth. I admit computing to the milliseconds may seflect unperceived differences but, once again, not noticeable as far as I’m concerned. One last point: in Google’s Chrome latest beta, layout velocity seemed somewhat random as compared to a TraceMonkey’s more regular performance.

    Reply

  13. Gerv wrote on January 14th, 2010 at 4:10 am:

    Have you done those GC timing measurements on all platforms? On my
    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2) Gecko/20100105 Firefox/3.6
    (3.6-latest on Ubuntu 9.10, on an IBM Thinkpad X200), the average GC delay for the demo above is 75ms after a restart. And the animation is noticeably jerky when there’s a GC.

    However, when I first came to this page and tried that demo, the time was consistently 600ms over a period of about a minute! I was wondering why my Firefox was experiencing frequent mini-hangs. I did have some other tabs open, although nothing that seemed particularly active. This sort of performance degradation happens to me a lot; I have to restart Firefox frequently. How do I go about tracking down what is causing it?

    Reply

  14. Neil Rashbrook wrote on January 14th, 2010 at 4:19 am:

    The code blocks always show in the syndicated version on Planet, but the height limit still takes effect, which makes the code overflow over the following posts…

    Reply

  15. Ciprian Mustiata wrote on January 14th, 2010 at 4:32 am:

    Hello. Pauses are really noticeable on 3.6 builds but probably I miss something (I have a 2 GHz+ CPU and pauses are 75 ms on my machine). I found two ways to handle small pauses and both go with the phrase: collect small heaps:
    - use a generational GC (I know that this is hard to be made, but the solution will make to adjust the latest generation size to make pauses predictible of around 10 ms) instead collecting all heap. For major collection that will eventually happen, that could happeneither using generations with predictible sizes (look for train collection algorithm, used in older java implementations), or you can do a bleeding edge algorithm (like G1) which will always collect the bigger blocks in a specified time. The second may be good for having predictible pauses.
    - separate heaps per components: tabs, chrome framework. This will make that the search space for dead objects smaller. Separating heaps per components will make easier to remove/add a new heap in overhead marks. Anyway, JS can access separate heaps and should be some marshaling involved.
    I know that both things are easier to be spoken than to be made, but in the same moment I have to say those problems, that maybe someone will find a proper solution with minimal impact on user experience.
    The TraceMonkey JIT I think that is really capable today, even is not neck on neck with other implementations (2x slower). But I think that many of those benchmarks do not expose in fact that 2x speed slower is in fact 20 times faster than was 2 years earlier.
    Great job guys!

    Reply

  16. Fab wrote on January 14th, 2010 at 7:01 am:

    IE7: DOM Property Set: 88935 ms
    FF3.6: DOM Property Set: 55 ms

    We won’t be able to do anything nice while other browsers have such bad performance.

    Reply

  17. Boris wrote on January 14th, 2010 at 9:07 am:

    Actually, the “DOM property set” test is not actually testing the DOM property stuff, since there is no “x” DOM property on HTMLSpanElement. It’s just testing expandos (still useful, but not what jorendorff’s patches aimed to fix).

    Reply

  18. Boris wrote on January 14th, 2010 at 9:11 am:

    Zorkzero, safe mode disables the jit, so the bug goes away.

    For what it’s worth, I can reproduce the bug and filed https://bugzilla.mozilla.org/show_bug.cgi?id=539553 on it. It’s now blocking 3.6 release.

    Reply

  19. Kelly Clowers wrote on January 14th, 2010 at 8:02 pm:

    Just tried the tests here with SeaMonkey 2.0.3pre (Gecko 1.9.1.8pre) and FF3.7 20100112 (both 64 bit on Linux).
    Very nice speed increases. The animation still had some jerks, though, with ~80 ms delay.

    @fab IE 8 is much better (and IE 6 and 7 share is falling in favor of 8), and IE 9 builds are much better again, being in the same ballpark as everyone else.

    Reply

  20. Mark wrote on January 16th, 2010 at 7:59 am:

    I just tried the gc jerkiness test in 3.6 and it’s still easily noticeable when gc occurs (skips 1/4 of circle gc delay 70-95 ms) when many tabs open (30).
    This is on Linux.

    Reply

  21. Ricardo wrote on January 16th, 2010 at 12:23 pm:

    Got 85ms for GC on 3.6/Win XP, clear delay and jerkyness. Nothing new.

    Reply

  22. nemo wrote on January 19th, 2010 at 11:39 am:

    Ricardo, are you using Firebug?
    Might want to disable the addon before trying out this page.

    Reply

  23. Hanster wrote on January 19th, 2010 at 7:39 pm:

    Waw,,,

    Reply

  24. mawrya wrote on January 19th, 2010 at 9:56 pm:

    There should be a warning at the top of this post – Firebug interferes with the JIT, particularly versions before 1.5

    Considering that developers are the most likely to be reading this and also the most likely to have firebug installed, they might end up making flaky comparisons between Firefox and other browsers or coming to other conclusions because, unbeknownst to them, Firebug has completely disabled JIT.

    Reply

  25. Pingback from Firefox 3.6 släpps imorgon (21 januari) | on January 20th, 2010 at 11:24 pm:

    [...] är inte en vanlig underhållsversion utan sägs vara mycket snabbare än sin föregångare. På den här sidan kan du läsa om en lång artikel (men också mycket teknisk) som visar de framsteg som gjorts i [...]

    Reply

  26. Pingback from Things You’ll Love About Firefox 3.6 | Robert Accettura's Fun With Wordage on January 21st, 2010 at 12:13 pm:

    [...] Speed Improvements – TraceMonkey, the fast JS engine has gotten some tweaks to improve performance even further. Seeking in <video/> is now much faster than it was in [...]

    Reply

  27. Pingback from Ya está disponible Firefox 3.6 para su descarga | Weterede! on January 21st, 2010 at 12:49 pm:

    [...] la respuesta global del navegador tanto abriendo pestañas como reduciendo el tiempo de arranque. Firefox 3.6 mejora el rendimiento en un 20% frente a Firefox [...]

    Reply

  28. Pingback from Mozilla Firefox 3.6 Released | JetLib News on January 21st, 2010 at 1:22 pm:

    [...] for Personas, lightweight themes that can be installed without restarting the browser, and adds further performance improvements to the new Tracemonkey Javascript engine. One of the major goals of the release was to improve startup time and general UI responsiveness, [...]

    Reply

  29. Pingback from Firefox 3.6 Brings Improved JavaScript Performance Especially for Add-Ons … on January 21st, 2010 at 2:01 pm:

    [...] ran 3-4x faster in TraceMonkey compared to Firefox 3,” writes David Mandelin, a software engineer working on Mozilla’s JavaScript team. “For [...]

    Reply

  30. Sun wrote on January 21st, 2010 at 2:25 pm:

    I’m almost done moving over to Chrome. Just need bookmark sync (which Chrome has in the beta) but I want to use Xmarks instead. We thought Firefox was great for a few years, but Chrome has been kicking your ass. I hope you guys can improve your speed so we stay with you.

    Reply

  31. Pingback from Rich on Linux and FOSS! » Blog Archive » tech.slashdot.org : on January 21st, 2010 at 2:49 pm:

    [...] for Personas, lightweight themes that can be installed without restarting the browser, and adds further performance improvements to the new Tracemonkey Javascript engine. One of the major goals of the release was to improve startup time and general UI responsiveness, [...]

    Reply

  32. Pingback from Firefox 3.6 çıktı / Fatih Hayrioğlu'nun not defteri on January 21st, 2010 at 3:11 pm:

    [...] Javascript Performansı: Javascript performansında hızlandırmaya gidilmiş. Ayrıntılı bilgi için tıklayınız. [...]

    Reply

  33. Pingback from Firefox 3.6 is here! | Full Nulled Scripts Blog on January 21st, 2010 at 4:01 pm:

    [...] the work done to prevent crashes with third party software.  There are also enhancements like improved JavaScript performance and optimizations to speed up everyday Web tasks to make web applications snappier.  However, what [...]

    Reply

  34. Pingback from Mozilla Perú on January 21st, 2010 at 6:20 pm:

    [...] un 20% más rápido que Firefox 3.5, incluyendo nuevos trazados para códigos JavaScript (tienes un artículo muy técnico en la página de Hacks en inglés). Junto a esta mejora, el navegador responde de forma más fluida y tiene un tiempo de [...]

    Reply

  35. Wiritpol wrote on January 21st, 2010 at 8:07 pm:

    Firefox 3.6 does not support these ICC profiles version 4

    Reply

  36. mynthon wrote on January 22nd, 2010 at 11:59 am:

    gc delay in fx3.5: ~100ms
    gc delay in fx3.6: ~140ms

    i don’t see improvement.

    Reply

  37. Pingback from Could Firefox 3.6 be the Answer to Aurora? | Complete Source on January 22nd, 2010 at 4:19 pm:

    [...] Lockdown, which locks out Firefox add-ons without explicit user permission. In addition, they made several improvements to the TraceMonkey JavaScript engine for improved / faster video performance, along with many other [...]

    Reply

  38. Marko Macek wrote on January 23rd, 2010 at 5:08 am:

    I tried it again with 3.6 final release, the delay is now 40-45 ms (still 30+ tabs open).

    Reply

  39. Mark Holton wrote on January 24th, 2010 at 1:23 am:

    Please keep pushing forward (and sharing these insights).
    With great appeciation-

    Reply

  40. Pingback from Firefox 3.6 Is 15% Faster – Does It Really Matter? ~ Revelations From An Unwashed Brain on January 24th, 2010 at 2:01 am:

    [...] David Mandelin, who works on Mozilla’s JavaScript team, has posted technical details on Firefox 3.6’s JavaScript improvements on the hacks.mozilla.org blog. [...]

    Reply

  41. Pingback from Firefox Now 3rd Fastest Browser on the Net | Shark Lady Tech on January 24th, 2010 at 3:08 am:

    [...] The new version of Firefox, 3.6, is about 15% faster than Firefox 3.5, according to tests run by Computerworld. Firefox now renders JavaScript three times faster than Opera 10 and about four times faster than IE8. This data places Firefox as the 3rd fastest browser on the net – after Safari and Chrome. If you want to read more about the Java speed-ups on Firefox, there’s a lot of info here. [...]

    Reply

  42. Pingback from JavaScript speedups in Firefox 3.6 on January 24th, 2010 at 6:47 am:

    [...] full post on Hacker News If you enjoyed this article, please consider sharing it! Tagged with: Firefox [...]

    Reply

  43. gwenhwyfaer wrote on January 24th, 2010 at 6:51 am:

    Don’t have 3.5 to test. But under FF 3.6, WinXP sp2, Duron 1600 with 512MB RAM and shared video, I get GC pauses of 280-320ms.

    (Anyone telling me to upgrade my machine is welcome to give me some money with which to do so.)

    Reply

    1. gwenhwyfaer wrote on January 24th, 2010 at 6:52 am:

      (Please reparent the above comment.)

      Reply

  44. Jimboooo! wrote on January 24th, 2010 at 8:24 am:

    Frame delay: 28
    GC delay: 416
    Jerky as hell (couldn’t tell which way the line was spinning)

    That’s on Linux with no other apps/tabs open. Why /is/ Firefox performance so bad on Linux? Chrome rendered the line perfectly smoothly.

    Reply

    1. David wrote on January 25th, 2010 at 5:38 pm:

      Thunderbird is also sluggish on Linux, so it’s probably because of XULRunner having poor performance.

      Reply

  45. Pingback from Firefox 3.6 Is 15% Faster – Does It Really Matter? « my mcLife on January 24th, 2010 at 8:50 am:

    [...] David Mandelin, who works on Mozilla’s JavaScript team, has posted technical details on Firefox 3.6’s JavaScript improvements on the hacks.mozilla.org blog. [...]

    Reply

  46. Pingback from Firefox Takes a 15% Speed Jump « Technology News « Gadgets Mobiles on January 24th, 2010 at 12:20 pm:

    [...] David Mandelin, who works on Mozilla’s JavaScript team, has posted technical details on Firefox 3.6’s JavaScript improvements on the hacks.mozilla.org blog. [...]

    Reply

  47. Pingback from News : Firefox 3.6 is Now Out! - Page 3 - Erodov Forums on January 24th, 2010 at 3:34 pm:

    [...] Chrome. For those not feeling the love, here are the nitty gritty details of FF 3.6s speedup: JavaScript speedups in Firefox 3.6 ✩ Mozilla Hacks – the Web developer blog Make sure that the following options are true in about:config (although they are true by default [...]

    Reply

  48. Mic wrote on January 24th, 2010 at 4:30 pm:

    As I develop a web app, I live most of my day within a FF window.
    I was a bit reluctant to move to 3.6, as in the past some releases broke my development setup.

    I moved first to Firebug 1.5, it was immediately better.
    But installing the 3.6 radically improved the response time. Every operation seems now immediate.

    A big thank you for your work, you made mine way faster as from today.

    Reply

  49. Pingback from Firefox 3.6 Lebih Cepat 15 % dari Firefox 3.5 | adipedia.com on January 25th, 2010 at 7:16 am:

    [...] Salah satu anggota tim yang mengerjakan JavaScript Mozilla, David Mandelin, memosting detail teknis pada pengembangan JavaScript Firefox 3.6, di blog beralamat hacks.mozilla.org. [...]

    Reply

  50. Pingback from Firefox Takes a 15% Speed Jump « boygolly on January 25th, 2010 at 7:57 am:

    [...] David Mandelin, who works on Mozilla’s JavaScript team, has posted technical details on Firefox 3.6’s JavaScript improvements on the hacks.mozilla.org blog. [...]

    Reply

1 2

Add your comment

  1.