We have a VB6 app that launches our .NET code upon startup.
Cold start takes about 22 seconds consistently on a Windows XP machine. Warm start is about 4 seconds on the same machine.
Windows Vista/7 takes about 5 seconds for a cold start and about 3 seconds for a warm start.
Based on the above, I'm assuming the delays are disk access related and Vista/7 isn't as affected due to SuperFetch.
Obviously, we need to improve cold start performance for XP. I'm considering creating a "warmup" app that runs in the system tray on Windows startup...but before we spend the effort, I wanted to see if there are any other suggestions.
I've tried ngen'ing our assemblies and that seems to make no difference whatsoever.
Upon adding some tracing code, I can see it only takes about 1 second for the VB6 code to cross the .NET boundary...but the initialization code in .NET takes about 20 seconds. It does some reflection and I'm guessing the delay is loading GAC assemblies from disk...but I can't be entirely sure.
Suggestions?