我正在使用 Cython 进行一些实验,以确定是否应该使用它来加速我的 Django 模块的某些部分。因为我使用了很多字符串和字符串列表,所以我尝试了这个:
from libcpp.string cimport string
from libcpp.vector cimport vector
def cython_test_string():
cdef unsigned short int i = 0
cdef string s
# cdef vector[string] ls
for i in range(10000):
s.append('a')
# ls.push_back(s)
def python_test_string():
s = ''
# ls = []
for i in range(10000):
s += 'a'
# ls.append(s)
当然,C++ 字符串比 Python 对象快,所以我们得到这些结果(100 次迭代):
- Cython:0.0110609531403 秒
- 蟒蛇:0.193608045578 秒
但是当我们取消注释处理向量和列表的四行时,我们会得到:
- Cython:2.80126094818 秒
- 蟒蛇:2.13021802902 秒
我错过了什么,还是字符串向量非常慢?