Контекст: мой код Python передает массивы 2D-вершин в OpenGL.
Я тестировал 2 подхода, один с ctypes, другой со структурой, причем последний был более чем в два раза быстрее.
from random import random
points = [(random(), random()) for _ in xrange(1000)]
from ctypes import c_float
def array_ctypes(points):
n = len(points)
return n, (c_float*(2*n))(*[u for point in points for u in point])
from struct import pack
def array_struct(points):
n = len(points)
return n, pack("f"*2*n, *[u for point in points for u in point])
Любой другой. альтернатива? Есть какие-нибудь подсказки, как ускорить такой код (и да, это одно из узких мест моего кода)?