Python — Cython: быстрый способ преобразования значения char в строку

Мне нужно как можно быстрее преобразовать несколько значений символов в строки соответствующих символов 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 ++. Как я могу сделать преобразование быстрее?

0

Решение

Нашел это!

<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 раза быстрее.

0

Другие решения

Других решений пока нет …