"ばかげて簡単"は非常に相対的な用語です。 「はじめに」はそれだけです。 Cで堅牢な拡張を書くには、参照カウント、メモリ割り当て/解放、エラー処理などに注意する必要があります。 Cythonはあなたのためにその多くを行います。
Cythonの非ユニコード文字列は、Pythonのstrオブジェクトか、Cのようにcharの配列です。必要と思われる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
1ランの長さが2の場合、速度比は2.5です。すべての走行距離が2の場合、速度比は1.2です。すべてのことが考慮され、1回のキーストロークの投資に対する悪いリターンではありません。
+1:...私はそれを聞いたことがあり、興味深い:-) –
どのような文字列操作ですか? – Miles