nodes inserted into it to make a red-black tree worthwhile.
- Added more checks at the start of ClassifyLine so that it has a better chance
of avoiding the more complicated checking, and it seems to have paid off with
a reasonably modest performance boost.
SVN r169 (trunk)
vertices instead of lines.) On large maps, this can result in a very
significant speed up. (In one particular map, ZDBSP had previously
spent 40% of its time just scanning through all the vertices in the
map. Now the time it spends finding vertices is immeasurable. Now 68%
of its time on that map is spent inside ClassifyLine--because that
routine is called more than 16 million times, which suggests that even
a minor speedup in that routine should have a big impact--if I could
just think of how that might happen.) On small maps, this won't make
much of a difference, because the number of vertices to search was so
small to begin with.
SVN r167 (trunk)
the runtime is spent in that function. I should probably write a faster
vertex finding routine, since I currently just do a linear search through
all the vertices. That ought to help speed up SplitSegs, the second most
time-consuming routine. I also tried storing vertices as doubles instead
of fixeds, but that made performance drop across the board, so that's a
change that didn't make it in.
Ironically, the GCC compiled version is noticeably faster than the VC
version for x87 math, but VC produces a marginally faster SSE2 version.
SVN r163 (trunk)
- AddIntersection() should convert to doubles before subtracting the vertex
from the node, not after, to avoid integer overflow. (See cah.wad, MAP12
and MAP13.) A simpler dot product will also suffice for distance calculation.
- Splitters that come too close to a vertex should be avoided. (See cata.wad.)
- Red-Black Tree implementation was broken and colored every node red.
- Moved most of the code for outputting degenerate GL subsectors into another
function.
- Removed forgotten debugging file dump from WriteSSectors2().
- Enabled reference optimization and COMDAT folding in the linker for a slightly
smaller executable.
SVN r155 (trunk)
- MapSideDef.sector was declared signed but treated as unsigned.
- Degenerate (one-dimensional) subsectors could throw away segs when
output for GL nodes depending on the seg ordering.
SVN r152 (trunk)