Мне нужно как можно быстрее преобразовать несколько значений символов в строки соответствующих символов ASCII. Вот игрушечный пример. Я хочу, чтобы функция H (), вызываемая из среды Python, возвращала 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 ++. Как я могу сделать преобразование быстрее?
Нашел это!
<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 раза быстрее.
Других решений пока нет …