上下文:我的Python代码将2D顶点数组传递给OpenGL.
我测试了两种方法,一种是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])
Run Code Online (Sandbox Code Playgroud)
还有其他选择吗?有关如何加速此类代码的任何提示(是的,这是我的代码的一个瓶颈)?