For those of you using the asynchronous location bar add-on, today’s nightly of both mozilla-central and mozilla-1.9.1 should show a reduction in memory use. Turns out there was a bit of a leak in mozStorage that would mean you’d get high memory usage that would never go down. My bad.
For those of your programmers out there, I have a word of advice. Always make sure you have a virtual destructor in your base class. If you don’t, you could spend days tracking down a leak that doesn’t seem to make sense. Of course, this probably would have been spotted earlier if we reported leaks in xpcshell unit tests.
It seems as though the past builds still had issues on Windows. Mook was kind enough to get be a stack of the hang on shutdown folks were seeing, and I’ve modified the code to avoid making that happen (still not sure why it happened, but I know how it could get there – bug is filed). Without further delay, here’s an add-on that you can try out with the latest fixes in! I’ve been told on irc that this one works much better on Windows.
It turns out that I neglected to make the all-important packages-static file changes that would actually result in a build that works for most folks in my previous test builds. I thought I had fixed that with the last build, but apparently I never submitted it to the try server (I had the line in my terminal all ready to just press enter though!).
Without further delay, here is the new test build.
I’ve also made a handy little add-on that lets you test this out. I haven’t tested this add-on extensively, but it should work out OK. If you think you see a bug, try the test build first before reporting it please.
Still want your feedback on if you think the results are faster, slower, or about the same, so please follow-up!
A few months ago I decided to try to use the asynchronous storage API that was added in Firefox 3.1 to help reduce the pain of disk IO on the main thread. Sadly, it became quite apparent that this was going to be too big of a change and need to much work to make it into 3.1, so I put off doing any more work on it. However, this week I started working on the patch again, updating it to work with the changes to the location bar and the storage back-end. Today I finally got it passing all of our existing tests (although, I know of at least one condition where it fails and is untested).
Now that it’s passing all tests, I feel comfortable posting a test build for folks to try and see if it helps or not. I should note that the current implementation is pretty dumb and doesn’t take many opportunities speed up results. Additionally, there are some other performance wins that are on my mind that become a lot easier to do with this newer implementation.
Admittedly, I haven’t benchmarked this yet, so I don’t know how it compares to the existing code. During causal use, however, it feels no slower than the existing implementation, but I don’t usually have issues with it. The goal here is to help out those who do have performance issues with the location bar. In fact, that’s exactly the feedback I’m looking to get. So, if you are feeling ambitious and willing to live on the wild side for a bit, I’d like you try this test build. After a little bit of use, let me know if you think the results are faster, slower, or about the same. Note: this is build off of mozilla-central, so it’s like a 3.2a1pre build.
Your feedback is greatly appreciated!