The more levels of group an element is put in the slower it is.
100 lines at root level 3 seconds
100 lines at Level1 14 seconds
100 lines at Level2 19 seconds
It looks like Pro makes the Element at root level and then moves it which means there's a performance hit!
Is there a way of speeding this up?
Stopwatch stopwatch <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">Stopwatch</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
stopwatch<SPAN class="punctuation token">.</SPAN><SPAN class="token function">Start</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
Layout layout <SPAN class="operator token">=</SPAN> Project<SPAN class="punctuation token">.</SPAN>Current<SPAN class="punctuation token">.</SPAN>GetItems<SPAN class="operator token"><</SPAN>LayoutProjectItem<SPAN class="operator token">></SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="token function">FirstOrDefault</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="operator token">?</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetLayout</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
GroupElement groupElement <SPAN class="operator token">=</SPAN> LayoutElementFactory<SPAN class="punctuation token">.</SPAN>Instance<SPAN class="punctuation token">.</SPAN><SPAN class="token function">CreateGroupElement</SPAN><SPAN class="punctuation token">(</SPAN>layout<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
CIMElement cimGroupElement <SPAN class="operator token">=</SPAN> groupElement<SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetDefinition</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
cimGroupElement<SPAN class="punctuation token">.</SPAN>Name <SPAN class="operator token">=</SPAN> <SPAN class="string token">"First Level Group"</SPAN><SPAN class="punctuation token">;</SPAN>
groupElement<SPAN class="punctuation token">.</SPAN><SPAN class="token function">SetDefinition</SPAN><SPAN class="punctuation token">(</SPAN>cimGroupElement<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
GroupElement groupElement2 <SPAN class="operator token">=</SPAN> LayoutElementFactory<SPAN class="punctuation token">.</SPAN>Instance<SPAN class="punctuation token">.</SPAN><SPAN class="token function">CreateGroupElement</SPAN><SPAN class="punctuation token">(</SPAN>groupElement<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">for</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="keyword token">int</SPAN> i <SPAN class="operator token">=</SPAN> <SPAN class="number token">0</SPAN><SPAN class="punctuation token">;</SPAN> i <SPAN class="operator token"><</SPAN> <SPAN class="number token">100</SPAN><SPAN class="punctuation token">;</SPAN> i<SPAN class="operator token">++</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="punctuation token">{</SPAN>
List<SPAN class="operator token"><</SPAN>Coordinate2D<SPAN class="operator token">></SPAN> lineCoordinates <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">List</SPAN><SPAN class="operator token"><</SPAN>Coordinate2D<SPAN class="operator token">></SPAN> <SPAN class="punctuation token">{</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">Coordinate2D</SPAN> <SPAN class="punctuation token">{</SPAN> X <SPAN class="operator token">=</SPAN> i<SPAN class="punctuation token">,</SPAN> Y <SPAN class="operator token">=</SPAN> <SPAN class="number token">0</SPAN> <SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">Coordinate2D</SPAN> <SPAN class="punctuation token">{</SPAN> X <SPAN class="operator token">=</SPAN> i<SPAN class="punctuation token">,</SPAN> Y <SPAN class="operator token">=</SPAN> <SPAN class="number token">100</SPAN> <SPAN class="punctuation token">}</SPAN> <SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">;</SPAN>
Polyline polylineTic <SPAN class="operator token">=</SPAN> PolylineBuilder<SPAN class="punctuation token">.</SPAN><SPAN class="token function">CreatePolyline</SPAN><SPAN class="punctuation token">(</SPAN>lineCoordinates<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
CIMLineSymbol lineSym <SPAN class="operator token">=</SPAN> SymbolFactory<SPAN class="punctuation token">.</SPAN>Instance<SPAN class="punctuation token">.</SPAN><SPAN class="token function">ConstructLineSymbol</SPAN><SPAN class="punctuation token">(</SPAN>ColorFactory<SPAN class="punctuation token">.</SPAN>Instance<SPAN class="punctuation token">.</SPAN>BlackRGB<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">1.0</SPAN><SPAN class="punctuation token">,</SPAN> SimpleLineStyle<SPAN class="punctuation token">.</SPAN>Solid<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
GraphicElement lineElm <SPAN class="operator token">=</SPAN> LayoutElementFactory<SPAN class="punctuation token">.</SPAN>Instance<SPAN class="punctuation token">.</SPAN><SPAN class="token function">CreateLineGraphicElement</SPAN><SPAN class="punctuation token">(</SPAN>groupElement2<SPAN class="punctuation token">,</SPAN> polylineTic<SPAN class="punctuation token">,</SPAN> lineSym<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
CIMElement cimElement <SPAN class="operator token">=</SPAN> lineElm<SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetDefinition</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
cimElement<SPAN class="punctuation token">.</SPAN>Name <SPAN class="operator token">=</SPAN> <SPAN class="string token">"Line"</SPAN> <SPAN class="operator token">+</SPAN> i<SPAN class="punctuation token">;</SPAN>
lineElm<SPAN class="punctuation token">.</SPAN><SPAN class="token function">SetDefinition</SPAN><SPAN class="punctuation token">(</SPAN>cimElement<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="punctuation token">}</SPAN>
stopwatch<SPAN class="punctuation token">.</SPAN><SPAN class="token function">Stop</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
Debug<SPAN class="punctuation token">.</SPAN><SPAN class="token function">Print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">(</SPAN>stopwatch<SPAN class="punctuation token">.</SPAN>ElapsedMilliseconds <SPAN class="operator token">/</SPAN> <SPAN class="number token">1000</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="token function">ToString</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>Adam