Our application takes significantly more time to launch after a reboot (cold start) than if it was already opened once (warm start).
Most (if not all) the difference seems to come from loading DLLs, when the DLLs' are in cached memory pages they load much faster. We tried using ClearMem to simulate rebooting (since its much less time consuming than actually rebooting) and got mixed results, on some machines it seemed to simulate a reboot very consistently and in some not.
To sum up my questions are:
- Have you experienced differences in launch time between cold and warm starts?
- How have you delt with such differences?
- Do you know of a way to dependably simulate a reboot?
Edit:
Clarifications for comments:
- The application is mostly native C++ with some .NET (the first .NET assembly that's loaded pays for the CLR).
- We're looking to improve load time, obviously we did our share of profiling and improved the hotspots in our code.
Something I forgot to mention was that we got some improvement by re-basing all our binaries so the loader doesn't have to do it at load time.