У меня есть функция, которая рисует полигоны в контексте Pycairo следующим образом:
def draw_polygon(context, polygon):
context.move_to(*polygon[0])
for point in polygon:
context.line_to(*point)
context.line_to(*polygon[0])
Затем этот цикл вызывается много раз (~ 350k) этим циклом:
for polygon in polygons:
draw_polygon(context, polygon)
context.stroke()
Выполнение cProfiler
на вещах, draw_polygon
является основным узким местом, занимая около 60% tottime
.
Какой хороший подход к оптимизации этого типа чертежа, когда задействованы большие объемы геометрии?Есть ли способ, подобный openGL, собрать геометрию в список вершин или другую оптимизированную структуру данных?