Cython:将char值转换为字符串的最快方法

时间:2014-02-14 23:57:28

标签: python c++ string cython chr

我需要尽可能快地将多个char值转换为相应ASCII字符串。这是一个玩具的例子。我想要从python环境调用的H()函数返回str'aaa'。

from libcpp.string cimport string

cdef string G():
   return chr(97)

def H():
    cdef string s
    s.append(G())
    s.append(G())
    s.append(G())

    return s

我相信,这不是最佳变体,因为它使用python函数ord()将97封装到python对象中,然后返回char,将其装入另一个python对象str并最终将其转换为c ++字符串。我怎样才能更快地完成转换?

1 个答案:

答案 0 :(得分:1)

发现它!

<string>chr(i) 

可以替换为

string(1, <char>i)

以下是新变体的示例:

cdef string G():
    return string(1,<char>97)


def H():
    cdef string s
    s.append(G())
    s.append(G())
    s.append(G())
    return s

新版本的工作速度提高了2倍。