我的问题:我发现,使用原始C ++使用STL映射和向量处理大型数据集通常比使用Cython更快(且内存占用更少)。
我认为速度下降的部分原因是使用Python列表和字典,在Cython中使用较少占用数据结构可能会有一些技巧。例如,此页面(http://wiki.cython.org/tutorials/numpy)显示了如何通过预定义ND数组的大小和类型在Cython中非常快速地创建numpy数组。
问题:有什么方法可以对列表/字典进行类似的操作,例如,通过大致列出您希望在其中包含多少个元素或(键,值)对? 也就是说,在Cython中是否有惯用的方法将列表/字典转换为(快速)数据结构?
如果没有,我只需要用C ++编写并包装Cython导入即可。
Cython现在具有模板支持,并带有一些STL容器的声明。
参见http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html#standard- library
这是他们给的例子:
from libcpp.vector cimport vector cdef vector[int] vect cdef int i for i in range(10): vect.push_back(i) for i in range(10): print vect[i]