2

我正在使用 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 秒

我错过了什么,还是字符串向量非常慢?

4

0 回答 0