I ran Quantify to see why we take so long to display this page, and I discovered we were creating and destroying 32,780 string buffers. It turns out that nsComponentManager::ProgIDToCLSID() is using a nsStringKey and it seems the auto string buffer isn't large enough so we end up allocating the buffer on the heap. I'll file a separate bug on why ProgIDToCLSID() is being called so much, but we need this routine to be efficient and that means no heap allocation if possible
Some additional data. There were a total of 154K calls to free() during the load of this page, and so the 32,780 calls to free represents 21%
Severity: normal → major
Status: NEW → ASSIGNED
Priority: P3 → P2
Target Milestone: M11
Summary: [PERF] Excessive string allocations (component manager) → Excessive string allocations (component manager)
*** Bug 13008 has been marked as a duplicate of this bug. ***
rickg was going to change nsString to default to 62 chars. That would eliminate this. Waiting for what happens there.
Status: ASSIGNED → RESOLVED
Closed: 20 years ago
Resolution: --- → FIXED
Code fix verified by dp.
You need to log in before you can comment on or make changes to this bug.