「ばかばかしいほど簡単」は、非常に相対的な用語です。「はじめる」とはまさにこのこと。C で堅牢な拡張機能を作成するには、参照カウント、メモリの割り当て/解放、エラー処理などに細心の注意を払う必要があります。Cython がその多くを行います。
Cython の非 Unicode 文字列は、Python の str オブジェクトか、C のように char の配列です。どの 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 の 1 つのランで、速度比は 2.5 です。すべての実行の長さが 2 の場合、速度比は 1.2 です。すべてを考慮すると、キーストローク 1 回の投資に対する見返りは悪くありません。