Tightening all the screws
<div id="bridgedd"> <div class="excerpt-title">This is a blog excerpt. <a href="http://dengine.net/blog/2016/11/tightening-all-the-screws/" target="_blank">Read Full Article</a> </div> <br /> <p>For the past week I have been exclusively focusing on optimizations.</p>
<p>Work in the 2.0 unstable builds has been progressing without much attention having been paid to performance profiling. However, it has become clear that even in very basic maps (like Doom E1M1) there were unacceptable FPS dips. I decided to get to the bottom of what was going on. </div>
<p>Work in the 2.0 unstable builds has been progressing without much attention having been paid to performance profiling. However, it has become clear that even in very basic maps (like Doom E1M1) there were unacceptable FPS dips. I decided to get to the bottom of what was going on. </div>
Comments
I find that making this kind of optimizations is actually quite addictive. Each change gives a tiny boost of 0.1-0.5%, but eventually the improvements start adding up and you see the FPS numbers slowly rise. Performance profiling is also quite interesting as it gives very detailed insights about how your code actually gets executed.
On Windows I've been using Very Sleepy as my profiler. I like it much better than the VS profiling features.
1) no packages loaded
build 2141 (x64)
start of e1m1 43 fps
open space e1m1 36-41 fps
start of e4m2 22 fps
build 2115 (x64)
start of e1m1 32 fps
open space e1m1 26-33 fps
start of e4m2 14.4 fps
so the gain is about:
start of e1m1 34%
open space e1m1 24-38%
start of e4m2 52%
2) packages loaded: jdrp 1.01, hi-res, jdui
build 2141 (x64)
start of e1m1 33.3 fps
open space e1m1 28-31 fps
start of e4m2 13-14 fps
build 2115 (x64) (no HUD weapons from jdrp)
start of e1m1 28 fps
open space e1m1 19-24 fps
start of e4m2 10 fps
so the gain is about:
start of e1m1 19%
open space e1m1 29-47%
start of e4m2 30-40%
That is a very good improve. Can you tight some screws even more?
Much bigger performance gains could be achieved by rethinking how rendering is done on a higher level. Ultimately I prefer investing time into that direction.
I think that the treetest.pk3 wad would be a good test case. However I do not know how to make it run under doomsday.
The file can be downloaded via this link: https://zandronum.com/tracker/file_download.php?file_id=1084&type=bug
Some description about the performance in gzdoom can be seen here: http://forum.drdteam.org/viewtopic.php?t=7108 (points 1. and 2.)
The behavior of treetest in zandronum is here: https://zandronum.com/tracker/print_bug_page.php?bug_id=1541
I remember that there are some other locations in the standard doom which are quite bad. Once I have time I will try to find them and post them here.