How Firefox performs (and doesn't) for me

August 17, 2012

In response to my disenchantment with Firefox and especially my performance problems, a number of commentators talked about how Firefox performs for them. As a result I want to cover my Firefox performance stuff in more detail; since my Firefox setup and the resulting performance I get is a bit odd, this is an entry instead of a comment.

To start with, I keep Firefox running all of the time because of my Firefox remote control. My running Firefox has an essentially constant set of iconified base windows (in theory they are web pages that I am going to read sometime, and sometimes I actually do read one and close it) plus a parade of transient windows for whatever web page I'm consulting now. Because I'm a 'disposable usage' person, I open a new Firefox window for pretty much every URL I want to look at (or every web search I want to do) and then close the window when I'm done reading that page. What I consider the steady state or the base state of my Firefox is Firefox with all of those transient windows closed; this is how Firefox looks when I have just started it and when I'm done for the day.

(Partly because I'm a big believer in turning JavaScript off, none of the persistent windows and web pages I have sitting around are 'app' pages, things that run JavaScript and so on (so no Google Mail or the like sitting always active in a tab). I use an entirely different browser instance for those for reasons that don't fit in this aside. However, over the course of a day I do wind up transiently visiting various web pages that I have JavaScript enabled on.)

When it initially starts, my Firefox is snappy and responsive (and I believe pretty much always has been); operations like scrolling a page, clicking on links, or moving through Firefox's own popup menu are quick and happen without delays. It also has a relatively low memory usage, with a resident set size of under a gigabyte. Over the course of a couple of days of usage, both of these change; as I open new windows, use them for a bit, and then close them again, Firefox's memory usage and RSS size climbs and things start visibly stalling (both UI operations and eventually repainting windows). This is especially visible in UI elements that are handled by extensions and my canary in the coal mine has become FireGestures; when Firefox has bloated up and become slow, I may have to perform a gesture several times before FireGestures is actually invoked and reacts to it. All of this happens with just the consistent set of base windows, with all transient windows closed again. Of course, having lots of transient windows around at the time makes it worse.

This is not an issue of insufficient RAM; both machines that this happens on have 16 GB, most of which is unused, and the trouble starts when Firefox hits a RSS of only 1 GB and change. I don't think it's an issue of insufficient CPU but I'm not completely confidant of that (I haven't gone the extra distance to monitor Firefox's instantaneous CPU usage once it's bloated up). And the issue goes away entirely if I quit and restart Firefox (which winds up with exactly the same set of windows and URLs and so on that I had before the restart).

(The issue has also persisted across multiple Firefox versions, all the way up to the Firefox 14 build I'm currently using. I've flirted with nightly builds without improvement, but they were nightly builds.)

I'm not certain how many people keep long-running Firefox instances around these days, although I suppose the growth of things like Google Mail and other always-running web apps may have encouraged it. And of course the performance of a frequently restarted, short-lived Firefox is going to be fine in my environment; if I could live with the vague annoyance of restarting Firefox every morning I don't think I'd have any problems.

(There are undoubtedly performance problems even with a just-started Firefox in some environments. I just don't run into them.)

Written on 17 August 2012.
« Why I hate vendors, printers edition
What everyone needs in source packages »

Page tools: View Source, Add Comment.
Search:
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Fri Aug 17 02:00:59 2012
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.