Что такое самый быстрый способ в python построить ac-массив из списка кортежей с плавающей запятой?

Контекст: мой код 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])

Любой другой. альтернатива? Есть какие-нибудь подсказки, как ускорить такой код (и да, это одно из узких мест моего кода)?

6
задан rndblnch 11 November 2010 в 16:48
поделиться