Wednesday, June 17, 2009

Again fixes and a benchmark

I had made some fixes that was mainly related with design of yesterday. I had almost no time to continue adnotation adding.

I wanted to check how much NaroAD it scales up. Means how many distinct shapes can you work with and what is the associated overhead. I found that first of all Naro is fairly fast and in a lot of cases is enough fast to work with complex scenes. Also, NaroCAD is built on top of OpenCascade which may be itself slow in the tests we've made them.

What was the benchmark about? To add continuously 10.000 lines to NaroCAD scene and see how it behaves. So I had four cases: 0 to 10.000 shapes (to be more fair, from 3 shapes), 10.000 to 20.000 shapes, etc.

Here are the results

This specific benchmark shows that it will take longer and longer to add the same amount of shapes. Also, Undo step processing itself may take 1/5 of time and grows as the scene increase in size.

Also, for persons that wants to count everything, at 40k primitives NaroCAD uses 550M of RAM and have completely define the primitives in both visual and persistent way. Means you may have a document with 40k small shapes using XP and 1G of RAM.

Should you be worry on this performance hit on high level primitive count? I really believe that you should not. But if you think that performance matter on you, the biggest thing you should do is to optimize OpenCascade code as only to show 10 K lines, is a hit of performance of OpenCasade visualization level. Also, if for you that performance scaling is an issue, you may work on more documents in NaroCAD, and at the end combine them. Also, even in the slowest part of benchmark, to add a shape at over 30.000 shapes already drawn, from defining it to add it to OpenCascade/OpenGl visualization layer, take 6.5 ms (on average). Is practically no performance hit for an user that works with such a high scene complexity.

There is only a downside and this is by processing Undo, that may take seconds to make a diff correctly. Probably only Undo should be optimized in future, but in regular usage, till 1000 shapes, you will be hardly notice it.

The part I found pretty hard is to work with more than 100 shapes in NaroCAD, let alone 10000 shapes. at least from tree. Probably automatically numbering shapes will be a nice feature to be seen. Also would be nice to filter shapes from tree. Sounds pretty odd that when are created from a script 100 lines, to not know on which line to click.

No comments: