Thread Previous • Date Previous • Date Next • Thread Next |
On Sun, 11 Jan 2009, Rok Markovic wrote:
NET. The solution is to use more points to test where is the zone, and to test if the point is on the pad. This can make zone calculation even slower, I didn't test how fast is TestIfPointIsInsideZone(), does anyone knows. For calculating the points for testing it would be very convinient and fast to use vector calculations. Is there already any vector(matrix) computational library already in use in this project?
I tried compiling kicad with GCC autovectorization enabled, but wasn't able to get much speedup. That's mostly because I didn't compile Boost too I guess. Jean-Pierre said that polygon slowness is probably because of the drawing, but I dont know. As I can not do real profiling of wx programs everything is just guessing. I even tested changing trigonometry look up tables to native/SSE functions to spare cpu cache, but got very marginal boost.
In these easily parallelised parts, just go ahead and implement it. Here is some links you may find useful:
http://gcc.gnu.org/projects/tree-ssa/vectorization.html http://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.htmlIf anyone could give pointers to using GNU profiler (gprof) with KiCad I'd be delighted :)
I think gcc vector extensions or autovectosization would be the cleanest and most portable way of doing this and avoid another third-party library. They seem to be geared towards image processing and generic dsp and may be a bit out of scope for this. It is implementors choice in the end...
-Vesa
Thread Previous • Date Previous • Date Next • Thread Next |