Startup Performance

Everything about development and the OpenMW source code.
Chris
Posts: 1626
Joined: 04 Sep 2011, 08:33

Re: Startup Performance

Post by Chris »

Chris wrote:The NIFLoader class should probably keep a map of skeleton/mesh pairs that have been loaded, so the load() method can get the appropriate information without having to load the NIF again.
FWIW, I'm doing this now, as a warm up before starting work on implementing animation accumulation.
blunted2night
Posts: 63
Joined: 28 Dec 2012, 08:29

Re: Startup Performance

Post by blunted2night »

Chris wrote:FWIW, I'm doing this now, as a warm up before starting work on implementing animation accumulation.
OK, I'll look for something else to do.
blunted2night
Posts: 63
Joined: 28 Dec 2012, 08:29

Re: Startup Performance

Post by blunted2night »

Inside MyGUI_3.2.0\Platforms\Ogre\OgrePlatform\src\MyGUI_OgreDataManager.cpp,

changing

Code: Select all

	bool OgreDataManager::isDataExist(const std::string& _name)
	{
		const VectorString& files = getDataListNames(_name);
		return (files.size() == 1);
	}
to

Code: Select all

	bool OgreDataManager::isDataExist(const std::string& _name)
	{
		return Ogre::ResourceGroupManager::getSingleton().resourceExistsInAnyGroup (_name);
	}
Reduced the run-time of MyGUI::Gui::initialise by over 60% which reduced start-up time by 10% after all my other changes.

With all my optimizations combined, I have reduced start-up time on my machine by 68%. If I remove DirArchive altogther, my start-up time is reduced by 73% (but break case sensitive file-systems).

I have push my work in progress to https://github.com/blunted2night/openmw/commits/work/ if anyone is interested in the details of the changes I made.
User avatar
hircine
Posts: 157
Joined: 06 Aug 2011, 07:18

Re: Startup Performance

Post by hircine »

Could you provide windows binaries for testing? :)
User avatar
scrawl
Posts: 2152
Joined: 18 Feb 2012, 11:51

Re: Startup Performance

Post by scrawl »

blunted2night wrote:Inside MyGUI_3.2.0\Platforms\Ogre\OgrePlatform\src\MyGUI_OgreDataManager.cpp,
I think you might be able to inherit from OgreDataManager and tell MyGUI to use that (i.e. no patch needed). At least that was possible with OgreRenderManager.
blunted2night
Posts: 63
Joined: 28 Dec 2012, 08:29

Re: Startup Performance

Post by blunted2night »

hircine wrote:Could you provide windows binaries for testing?
I will see what I can do...
scrawl wrote:I think you might be able to inherit from OgreDataManager and tell MyGUI to use that (i.e. no patch needed). At least that was possible with OgreRenderManager.
Good call, I will implement that.
blunted2night
Posts: 63
Joined: 28 Dec 2012, 08:29

Re: Startup Performance

Post by blunted2night »

blunted2night wrote:
hircine wrote:Could you provide windows binaries for testing?
I will see what I can do...
I put a .7z file with all the windows binaries (openmw & dependencies) I used. I tried the generated installer, but it didn't install the dependencies and I didn't have time to investigate.

https://docs.google.com/open?id=0B6SjCD ... jhIRUFYVEk
User avatar
Zini
Posts: 5538
Joined: 06 Aug 2011, 15:16

Re: Startup Performance

Post by Zini »

All merged. I got an overall loading performance improvement (startup and initial cell load) of nearly a factor of 2. Well done (the texture renaming changes make up most of that on Linux).
blunted2night
Posts: 63
Joined: 28 Dec 2012, 08:29

Re: Startup Performance

Post by blunted2night »

Zini wrote:All merged. I got an overall loading performance improvement (startup and initial cell load) of nearly a factor of 2. Well done (the texture renaming changes make up most of that on Linux).
Thanks

My NIF caching patch should have a noticeable effect too. I will rebase against your master and submit a pull request for you to review.
Chris
Posts: 1626
Joined: 04 Sep 2011, 08:33

Re: Startup Performance

Post by Chris »

I'm curious about commit 218139351830d00b3b564b13ab7d16276b99c6d3 ("change texture renaming logic to increase performance"). Is this how vanilla MW works, by preferring the DDS file even if the exactly-named one exists?
Post Reply