Performance improvements do not affect the game simulation speed. They affect UI and program stability during 10+ minute executions.
Buffered graphics: Previously the tree graphics would go to <1 FPS as the tree got large. All vertices were previously sent over to the graphics card every draw. Now, vertices are periodically put into buffers that live on the graphics card. Newer nodes are still drawn the old way until a buffer threshold is met. Some methods that used to move vertices around is now broken, since once a vertex is placed in buffer, it is not edited. This could be fixed, but is a low priority. When a branch needs highlighting, an override line can be drawn on top of the base one.
TensorFlow memory leaks were everywhere. This explains why the entire OS would freeze up after awhile. Java heap would stay relatively steady, but VIRT would get very large. All TFlow objects need .close() called on them. Close methods were added all the way up to controller and sampler level to close any resources, like tensorflow, that operate below. Sessions, graphs, and tensors all need to be closed. Now memory only very slowly creeps up, as we would expect given that state data is constantly being increased.
Performance improvements do not affect the game simulation speed. They affect UI and program stability during 10+ minute executions.
Buffered graphics: Previously the tree graphics would go to <1 FPS as the tree got large. All vertices were previously sent over to the graphics card every draw. Now, vertices are periodically put into buffers that live on the graphics card. Newer nodes are still drawn the old way until a buffer threshold is met. Some methods that used to move vertices around is now broken, since once a vertex is placed in buffer, it is not edited. This could be fixed, but is a low priority. When a branch needs highlighting, an override line can be drawn on top of the base one.
TensorFlow memory leaks were everywhere. This explains why the entire OS would freeze up after awhile. Java heap would stay relatively steady, but VIRT would get very large. All TFlow objects need
.close()
called on them. Close methods were added all the way up to controller and sampler level to close any resources, like tensorflow, that operate below. Sessions, graphs, and tensors all need to be closed. Now memory only very slowly creeps up, as we would expect given that state data is constantly being increased.