標準のpython(2.7が望ましい)のみを使用して、特定の文字列内のすべての文字のASCII値を合計するより効率的な方法を探しています。
現在私は持っています:
print sum(ord(ch) for ch in text)
この質問の私の主な焦点と側面は、私が上に書いたことであることを強調したいと思います.
以下は、この質問の重要な側面ではなく、そのように扱われるべきです:
では、なぜ私はそれを求めているのですか?! このアプローチと、ここでPyInline を使用して同じことを行う単純な C コード関数の埋め込みを比較しました。単純な C 埋め込み関数は 17 倍高速であるようです。
私が提案したもの (標準の Python のみを使用) よりも高速な Python アプローチがない場合、Python 開発者がそのような実装をコアに追加していないのは奇妙に思えます。
提案された回答の現在の結果。Windows 7、i-7、Python 2.7:
text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
sum(ord(ch) for ch in text)
>> 0.00521324663262
sum(array.array("B", text))
>> 0.0010040770317
sum(map(ord, text ))
>> 0.00427160369234
sum(bytearray(text))
>> 0.000864669402933
C-code embedded:
>> 0.000272828426841