Improved speed in FlatCAMRTreeStorage.
This commit is contained in:
parent
23b20ba716
commit
17a3316ce4
22
camlib.py
22
camlib.py
|
@ -389,11 +389,11 @@ class Geometry(object):
|
||||||
valid cuts. Finalizes by cutting around the inside edge of
|
valid cuts. Finalizes by cutting around the inside edge of
|
||||||
the polygon.
|
the polygon.
|
||||||
|
|
||||||
:param polygon:
|
:param polygon: Shapely.geometry.Polygon
|
||||||
:param tooldia:
|
:param tooldia: Diameter of the tool
|
||||||
:param seedpoint:
|
:param seedpoint: Shapely.geometry.Point or None
|
||||||
:param overlap:
|
:param overlap: Tool fraction overlap bewteen passes
|
||||||
:return:
|
:return: List of toolpaths covering polygon.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Current buffer radius
|
# Current buffer radius
|
||||||
|
@ -3480,13 +3480,21 @@ class FlatCAMRTreeStorage(FlatCAMRTree):
|
||||||
|
|
||||||
self.objects = []
|
self.objects = []
|
||||||
|
|
||||||
|
# Optimization attempt!
|
||||||
|
self.indexes = {}
|
||||||
|
|
||||||
def insert(self, obj):
|
def insert(self, obj):
|
||||||
self.objects.append(obj)
|
self.objects.append(obj)
|
||||||
super(FlatCAMRTreeStorage, self).insert(len(self.objects) - 1, obj)
|
idx = len(self.objects) - 1
|
||||||
|
self.indexes[obj] = idx
|
||||||
|
super(FlatCAMRTreeStorage, self).insert(idx, obj)
|
||||||
|
|
||||||
|
#@profile
|
||||||
def remove(self, obj):
|
def remove(self, obj):
|
||||||
# Get index in list
|
# Get index in list
|
||||||
objidx = self.objects.index(obj)
|
# TODO: This is extremely expensive
|
||||||
|
#objidx = self.objects.index(obj)
|
||||||
|
objidx = self.indexes[obj]
|
||||||
|
|
||||||
# Remove from list
|
# Remove from list
|
||||||
self.objects[objidx] = None
|
self.objects[objidx] = None
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
# Run kernprof -l -v gerber_parsing_line_profile_1.py
|
||||||
|
import sys
|
||||||
|
sys.path.append('../../')
|
||||||
|
from camlib import *
|
||||||
|
from shapely.geometry import Polygon
|
||||||
|
|
||||||
|
poly = Polygon([(0.0, 0.0), (1.0, 0.0), (1.0, 0.5), (0.0, 0.5)])
|
||||||
|
result = Geometry.clear_polygon2(poly, 0.01)
|
|
@ -0,0 +1,11 @@
|
||||||
|
import cProfile
|
||||||
|
import pstats
|
||||||
|
from camlib import *
|
||||||
|
from shapely.geometry import Polygon
|
||||||
|
|
||||||
|
poly = Polygon([(0.0, 0.0), (1.0, 0.0), (1.0, 0.5), (0.0, 0.5)])
|
||||||
|
|
||||||
|
cProfile.run('result = Geometry.clear_polygon2(poly, 0.01)',
|
||||||
|
'toollist_minimization_profile', sort='cumtime')
|
||||||
|
p = pstats.Stats('toollist_minimization_profile')
|
||||||
|
p.sort_stats('cumulative').print_stats(.1)
|
|
@ -1,6 +0,0 @@
|
||||||
import cProfile
|
|
||||||
import pstats
|
|
||||||
from camlib import *
|
|
||||||
|
|
||||||
g = Geometry()
|
|
||||||
|
|
Loading…
Reference in New Issue