Closed Bug 103453 Opened 23 years ago Closed 23 years ago

browser startup performance, look at pref calls.

Categories

(SeaMonkey :: General, defect, P2)

x86
Windows 2000
defect

Tracking

(Not tracked)

RESOLVED WONTFIX
mozilla0.9.6

People

(Reporter: sspitzer, Assigned: paulkchen)

References

(Depends on 1 open bug)

Details

(Keywords: perf)

Attachments

(1 file)

something we're looking at for mailnews is to see if we are abusing prefs (especially the char prefs) in any way. in my debug win2k build, I started browser (mozilla -P sspitzer about:blank) and open a second browser (the pref is set to open about:blank) I'll attach the pref calls that were made in doing that.
if you are curious, the mail version of this bug is #103444 here are the the most common calls in opening up two browser windows to abou:blank: 35 XXX copy pref capability.policy.default.Window.scriptglobals 34 XXX copy pref capability.policy.default.Window.scriptglobals.set 32 XXX bool pref javascript.options.werror 32 XXX bool pref javascript.options.strict 31 XXX copy pref intl.accept_languages 11 XXX copy pref font.default
Thanks for doing this. javascript.options.werror and javascript.options.strict *32*, wtf?! Cc'ing jst. Also cc'ing mstoltz since his capability prefs are the reigning champs right now ;)
We check for javascript.options.strict and .werror in the constructor of nsJSContext: http://lxr.mozilla.org/mozilla/source/dom/src/base/nsJSEnvironment.cpp#384. Apparently this constructor is called only by NS_CreateScriptContext() which is called by nsDOMSOFactory::NewScriptContext(). I could find only three places calling this last method: /docshell/base/nsDocShell.cpp, line 5967 /content/xbl/src/nsBindingManager.cpp, line 217 /content/xul/document/src/nsXULPrototypeDocument.cpp, line 615 Note that the nsJSContext is cached after having been created. How often are all those functions called?
adding perf keyword, ->pchen/p2/096
Assignee: trudelle → pchen
Keywords: perf
Priority: -- → P2
Target Milestone: --- → mozilla0.9.6
Are pref accesses really that expensive? They're basically just a hashtable lookup and (for char prefs) a string alloc & copy. I looked at some Quantify data on opening a window to about:blank, and the amount of time spent in nsScriptSecurityManager, including the pref accesses, is pretty much off the radar - maybe 0.01%. That being said, I am experimenting with a new system for the security manager which doesn't call prefs every time. I'll see if it actually improves performance.
keep in mind, while calling CopyCharPref() 31 times isn't going to slow us down, it might be exposing a problem that is slowing us down.
I don't understand...if Quantify says that nsScriptSecurityManager initialization plus all of its decendants are hardly taking any time at all, then how can you say it's slowing us down?
I'm not claiming that your code is slowing us down. I'm saying look at the pref calls for performance hot spots. what ever is calling CopyCharPref("capability.policy.default.Window.scriptglobals") 35 times might be doing something else 35 times. I put some printfs in prefapi.c, and these are my findings for about:blank. if there is nothing here, feel free to mark it invalid.
Depends on: 105757
Blocks: 7251
Couldn't find where nsScriptSecurityManager accesses capability.policy.default.Window.scriptglobals and capability.policy.default.Window.scriptglobals.net, but as Fabian pointed out, the javascript.options.* prefs are accessed whenever we create a new js context. And yes, we create a lot of them. Unless someone else wants to take a crack at this, I'm marking wontfix.
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → WONTFIX
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: