Saturday, July 31, 2010

WPF Controls and Solver Caching

The WPF code porting had some good achievements like an unified theme but also some small problems. One of the biggest is that the code was not optimized in many ways. There was a lot of back work to update the WPF controls and that is expensive in CPU times.
This nightly build will use *EXPERIMENTAL* caching scheme for TreeView and sections on property grid. This should improve greatly cases with multiple created shapes and you edit/add one shape. In older builds you may encounter UI freezing. The freezes may be still there, but they will be felt at much larger shape count.
The WPF Color picker was changed in Property grid to be one more complete. This will also improve the display speed of the property grid, as is separated from the property grid itself.
This caching scheme can be reset (at the code level) and sometimes it does need so, but it need extra testing to detect those cases when cache gets out of sync.
The Property grid also cache the Transformations and Shape controls (color, name and transparency) which also get some speedup.
The solver component will be able to cache geometry. This code is done in the idea that every time a shape is not changed, the solver information is not computed. Also caching will work for now just for extrude, because we don't want if the caching code is broken to make all NaroCAD to be broken. This will have some overhead (much smaller anyway) at propagation step, when caching will happen in cascade.
Based on profiling sessions, with those changes you may expect a realistic 2x speedup in those cases that you had a bigger scene and you edit or add just one shape.

No comments: