Pythonのソート機能の速度をテストするために、次のスクリプトを作成しました。
from sys import stdin, stdout
lines = list(stdin)
lines.sort()
stdout.writelines(lines)
sort
次に、それを1000万行を含むファイルのcoreutilsコマンドと比較しました。
$ time python sort.py <numbers.txt >s1.txt
real 0m16.707s
user 0m16.288s
sys 0m0.420s
$ time sort <numbers.txt >s2.txt
real 0m45.141s
user 2m28.304s
sys 0m0.380s
組み込みコマンドは4つのCPUをすべて使用しますが(Pythonは1つだけを使用します)、実行には約3倍かかります!何を提供しますか?
sort
Ubuntu 12.04.5(32ビット)、Python 2.7.3、8.13を使用しています。
ベストアンサー1
イズカルタの口コミ答えはロケール別の比較です。コマンドsort
は環境に表示されるロケールを使用し、Pythonはデフォルトでバイト順序比較を使用します。 UTF-8文字列を比較するのは、バイト文字列を比較するよりも困難です。
$ time (LC_ALL=C sort <numbers.txt >s2.txt)
real 0m5.485s
user 0m14.028s
sys 0m0.404s
どのように。