- Slides (with detailed notes) from the “Forensic Debugging” talk by Valve's Elan Ruskin.
- How to rescue a broken stack trace: Recovering the EBP chain by Raymond Chen.
Wednesday, March 23, 2011
Debugging crashes
Two interesting posts on debugging crashes I came across this month:
Sunday, March 13, 2011
Startup performance of Addon SDK-based extensions
The addons.mozilla.org roadmap for 2011 has improving the add-ons performance as one of this year's goals, so after finishing with my XUL extensions project for the weekend, I did some quick measurements to see what effect add-ons built with the SDK have on the Firefox startup time.
I posted this message to the Add-on SDK discussion group, but reproducing it here anyway.
According to my tests (Mac OS X (10.5) with the latest Minefield and the latest Add-on SDK using
The list of all 38 modules loaded by a simple extension using widget and tabs (indenting shows require() dependencies):
I posted this message to the Add-on SDK discussion group, but reproducing it here anyway.
According to my tests (Mac OS X (10.5) with the latest Minefield and the latest Add-on SDK using
getStartupInfo()
):- an empty SDK-based extension (empty main.js) adds ~20 ms to the 700 ms baseline warm startup time (3%), which is tolerable, but
- the default extension created with 'cfx init' (adds a simple widget and loads the tabs module) adds more than 200 ms (28%) to the warm startup!
- 25% (50ms) running es5.js in each of the 38 distinct modules loaded
- 15% (30ms) is other initialization operations with the sandbox (creating sandboxes, setting properties)
- 10% (20ms) is spent in fs.getFile(), presumably loading the modules from disk
- 25% (50ms) spent evaluating the module code itself, not counting the require() costs listed above.
Counter | Hit count | Time spent, ms | Attributed to the securable-module infrastructure / to the user-level code? |
---|---|---|---|
start loading | 38 | 37 | user |
fs.getFile() | 38 | 19 | s-m |
up to createSandbox | 38 | 0 | s-m |
createSandbox | 38 | 17 | s-m |
setupSandbox, part 1 | 38 | 1 | s-m |
setupSandbox, part 2 - modifyModuleSandbox | 38 | 54 | s-m |
setupSandbox, part 3 | 38 | 15 | s-m |
before evaluate | 38 | 0 | s-m |
after evaluate | 38 | 52 | user |
finished | 38 | 0 | s-m |
The list of all 38 modules loaded by a simple extension using widget and tabs (indenting shows require() dependencies):
- plain-text-console
- memory
- unload
- main
- widget
- xul-app
- api-utils
- panel
- content
- content/loader
- events
- traits
- traits/core
- url
- file
- byte-streams
- text-streams
- xpcom
- content/symbiont
- ./worker
- cuddlefish
- securable-module
- timer
- hidden-frame
- errors
- observer-service
- window-utils
- tabs
- windows
- list
- windows/tabs
- tabs/tab
- utils/function
- tabs/events
- utils/thumbnail
- utils/data
- windows/dom
- windows/loader
Subscribe to:
Posts (Atom)