← Back to team overview

kicad-developers team mailing list archive

Re: 6.0 Zone filling differences

 

Le 21/06/2019 à 19:04, Jeff Young a écrit :
> I’ve pushed new bits.  So far these just address the performance issues, not the anomalies.
> 
> JP, could you give it another run and see if it improves things enough?
> 
> Cheers,
> Jeff.

It improves seriously, but not enough for all boards:

The demo "video" calculation time is now 15 sec instead of 1 minute.
(1 sec with the current algo)

The demo "pic_programmer" calculation time is also near 15 sec but
the calculation time is just noticeable with the current algo (less than
0.5 sec).

The improvement for the demo "kit-dev-coldfire-xilinx_5213" is much better:
if I add a GND zone on the top side on all the board, the
refill takes 2 seconds instead of freezing.

> 
> 
>> On 21 Jun 2019, at 16:59, jp charras <jp.charras@xxxxxxxxxx> wrote:
>>
>> Le 21/06/2019 à 17:41, Jeff Young a écrit :
>>> Question for you polygon folks:
>>>
>>> The old algorithm used to add a lot of pads to a “holes” polygon, then did a Simplify() on it, and then a BooleanSubtract() from the filled area.
>>>
>>> The new code does a Simplify() and BooleanSubtract() per pad.  Since the holes are all discrete in either case (ie: not overlapping or otherwise interacting with each other), I thought this would have similar performance, and it makes the code easier to understand. But perhaps this is the source of the performance issue?
>>>
>>> Cheers,
>>> Jeff.
>>
>> Operations between polygons use fast algorithms and AFAIK scan only once
>> the full set of segments, and calculation time is something like N log N
>> for N segments.
>> (But I am not a polygon specialist)
>>
>> If you subtract holes by pad to the zone, the cost is N log N x pad
>> count, with a value for N similar to the full segment count.
>>
>> Moreover Simplify() can be costly in calculation time (according to the
>> Clipper doc).
>>
>> I always saw (when I tried this kind of calculations) the calculation
>> time exploding, or at least much higher than a global calculation made
>> only once.
>>
>> -- 
>> Jean-Pierre CHARRAS
> 
> 


-- 
Jean-Pierre CHARRAS


References