Hi Seth,

Trying to keep track of lengths is going to be ugly.  I did re-write the 
bounding-box calc (which saves a bunch), and re-mapped the initialisation to 
use stack storage until all the points had been allocated (which saves a 
little).

But it’s still too slow (especially when you try to edit a pad).

A glyph is an array of strokes; a stroke is an array of points.  Do you 
remember which was giving the issue?  (Or was it both?)

Changing the glyph back to a deque (and leaving the strokes vectors) would 
probably alleviate much of the performance hit — but I’m not sure if it would 
bring back the memory issues or not.

Cheers,
Jeff.


> On 3 Dec 2019, at 00:57, Seth Hillbrand <s...@kipro-pcb.com> wrote:
> 
> On 12/2/19 3:45 PM, Jeff Young wrote:
>> Hi Seth,
>> 
>> What was the reason for the change from std::deque to std::vector?  Building 
>> the stroke font is now accounting for 50% of document load time (I think 
>> because we’re using a 2D vector so that any resize of any constituent vector 
>> has to reallocate the whole shebang).
>> 
>> We also load the font twice, which is something I’ll look at fixing 
>> irrespective of the above.
>> 
>> Thanks,
>> Jeff.
>> 
>> 
> 
> Hmm... That's true.  As we are allocating, we don't have pre-knowledge of the 
> Hershey point list lengths, so the vectors get resized as we add.  How much 
> will depend a bit on implementation.  But we'll gain speed by cycling once 
> over the font and building our length knowledge first.
> 
> The vector change was due to the deque overhead.  A deque takes a fair amount 
> of memory for the structure.  We generate a bunch of vectors with only 3-4 
> elements and the size of the deque is dominated by the structure overhead.  
> There was so much that JP's machine was crashing with the extra CJK fonts.
> 
> Best-
> Seth
> 
> -- 
>  
> Seth Hillbrand
> Lead Developer
> +1-530-302-5483‬ <tel:+12126039372>
> Davis, CA
> www.kipro-pcb.com <https://www.kipro-pcb.com/>    i...@kipro-pcb.com 
> <mailto:i...@kipro-pcb.com>
>  <https://twitter.com/KiProEDA>   <https://twitter.com/KiProEDA>       
> <https://www.linkedin.com/company/kicad>   
> <https://www.linkedin.com/company/kicad>_______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp

_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to