Got some various debugging info in place and finally decided to get some stats on the various levels of the map build.
Level | Cells | Avg. Distance | Time (ms) |
---|---|---|---|
0 | 12 | 1.051462 | 56 |
2 | 92 | 0.396275 | 243 |
4 | 252 | 0.2403322 | 1264 |
6 | 492 | 0.1721796 | 3594 |
8 | 812 | 0.1340831 | 11187 |
10 | 1212 | 0.1097718 | 19649 |
12 | 1692 | 0.09291888 | 34545 |
The cells increase at a slight exponential rate while the time at a much steeper rate. The generating code could be a lot more optimal, and the vast majority of this time is spent in the mesh generate. Each cell is locally subdivided down three levels. There are probably a lot of optimizations that could be run, and a couple of the loops could be consolidated. Over time I've managed to optimize most loops to just n * n.neighbors. I've opted more for understandable code (as much as possible) vs highly optimized loops. Considering that all of this is done once at compile time, it's not a big deal really.
Graphs
Cells

Time

Distance

This wwas lovely to read
ReplyDelete