[aquaria] [patch] Some optimizations

False.Genesis false.genesis at googlemail.com
Tue Dec 13 20:02:20 EST 2011


Found a few scenarios while modding that ran really slow, and did some 
profiling to find bottlenecks. I know this is probably not really useful 
with the new engine code in sight, but has been some nice training at 
least (first time with a profiler, yay).

I used 2 testing scenarios, and the combined results with the patch are 
roughly (based on total CPU time% minus Nvidia driver minus XP kernel):

[case: Massive particle emitter + many CollideEntity's on huge map]
- Vector interpolation: 5-8%
- Game::collideCircleWithGrid() - about 3-4%

[case: Large maps (tree01, mainarea)]
- Removed hack from GridRender, 10% faster for large maps
- use memchr() instead of byte-looping: 3-4%

As the now removed hack was made only for one map, i've fixed that one 
instead: - the fixed sun temple map file can be found here:
http://dl.dropbox.com/u/22111385/Aquaria/fixes/veil02.7z

It would be nice to improve RenderObject::matrixChain(), which I *think* 
is the main reason for LOTS of gfx driver <-> kernel spinlocking, but my 
OpenGL/math knowledge is not good enough.
I expect it to be optimized in the new code, anyways :)

@Ryan:
Consider this patch an experiment (not experimental, it works ;) ),
throw it in if you like, or don't.
But it would be really cool if you'd at least remove the hack in 
GridRender::onRender() (currently it is #1 bottleneck in the map drawing 
code), and apply the Vector class changes.

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: perf.patch
URL: <http://icculus.org/pipermail/aquaria/attachments/20111214/d938c29e/attachment-0001.diff>


More information about the aquaria mailing list