«Смешно легко» - очень относительный термин. «Начало работы» - это просто. Написание надежных расширений на C требует очень внимательного отношения к таким вещам, как подсчет ссылок, распределение / освобождение памяти и обработка ошибок. Cython делает многое для вас.
Не-юникодная строка в Cython - это либо объект Python str, либо массив char, как в C. Какая документация для Cython, по вашему мнению, вам нужна?
Я рекомендую вам попробовать Cython для себя. НО, прежде чем вы сделаете это, я настоятельно рекомендую вам проверить ваш код Python на предмет неэффективности. Иногда вы можете легко получить большие ускорения.
Например, сжатие пробелов в символах ... с использованием
re.sub(' +', ' ', s) # one space in pattern
означает, что в предположительно не редком случае, когда пробег имеет длину 1, он будет заменять пробел пробелом. Если все серии имеют длину 1, он создаст новую строку замены, когда он может просто увеличить (или не уменьшить, или что-то еще) счетчик ссылок входной строки и передать его обратно.
re.sub(' +', ' ', s) # two spaces in pattern
дает точно такие же результаты и может работать быстрее ... посмотрим:
Длина всех пробегов 1: скорость в 3,4 раза выше. Не показано: чем длиннее строка ввода, тем лучше.
\python26\python -mtimeit -s"s='now is the winter of our discontent'; import re; x = re.compile(' +').sub" "x(' ', s)"
100000 loops, best of 3: 8.26 usec per loop
\python26\python -mtimeit -s"s='now is the winter of our discontent'; import re; x = re.compile(' +').sub" "x(' ', s)"
100000 loops, best of 3: 2.41 usec per loop
В случае одного прогона длиной 2 передаточное число составляет 2,5. Для всех трасс длиной 2 коэффициент скорости равен 1,2. Учитывая все обстоятельства, неплохая окупаемость инвестиций в 1 нажатие клавиши.