我试图向我们的小组展示Cython在增强Python性能方面的优点。我展示了几个基准,所有这些基准都通过以下方式实现加速:
然而,我并没有通过优化我们的字符串代码的例子来优化我们的字符串。在
我试过的一个例子是:
cdef str a
cdef int i,j
for j in range(1000000):
a = str([chr(i) for i in range(127)])
但是输入'a'作为字符串实际上会使代码运行速度变慢。我已经阅读了关于“Unicode和传递字符串”的文档,但是对于它在我展示的案例中如何应用感到困惑。我们不使用Unicode——所有东西都是纯ASCII码。我们使用的是python2.7.2
如有任何建议,我们将不胜感激。在
我建议您对
cpython.array.array
s进行操作。最好的文档是C API和Cython源代码(请参见here)。在请注意,所需的操作与对字符串所做的操作有很大不同。在
^{pr2}$所以在这种情况下是30倍的加速。在
另外,FWIW,您还可以通过将
arr.tostring()
替换为arr.data.as_chars[:len(arr)]
并键入a
作为bytes
来删除另外几个µs。在相关问题 更多 >
编程相关推荐