しばらく前に簡単なcsv処理パフォーマンステストを実行し、その結果をコミュニティと共有したかったのです。どのテストがより正確で公正であるかを指摘してください。
csv
まず、次のように42MBファイルを取り出しました。
画像の最初の部分はcsv
ファイルの実際の内容であり、2番目の部分には処理したい行が含まれています。原則は次のとおりです。
If 3rd column contains "out" in the end of cell, then sum 5th coulumn
さまざまなツールを使用してファイルを処理するのにかかる時間は次のとおりです。
AWK AWK AWK
--- --- ---
real 0m0.627s real 0m0.626s real 0m0.631s
user 0m0.627s user 0m0.614s user 0m0.611s
sys 0m0.000s sys 0m0.012s sys 0m0.020s
PERL PERL PERL
---- ---- ----
real 0m0.931s real 0m0.946s real 0m0.933s
user 0m0.927s user 0m0.941s user 0m0.929s
sys 0m0.004s sys 0m0.004s sys 0m0.004s
BASH BASH BASH
------ ------ ------
real 0m0.186s real 0m0.173s real 0m0.184s
user 0m0.318s user 0m0.336s user 0m0.311s
sys 0m0.022s sys 0m0.022s sys 0m0.022s
PYTHON2 PYTHON2 PYTHON2
------ ------ ------
real 0m1.164s real 0m1.191s real 0m1.163s
user 0m1.144s user 0m1.162s user 0m1.155s
sys 0m0.020s sys 0m0.028s sys 0m0.008s
PYTHON3 PYTHON3 PYTHON3
------ ------ ------
real 0m1.377s real 0m1.392s real 0m1.377s
user 0m1.361s user 0m1.380s user 0m1.377s
sys 0m0.016s sys 0m0.012s sys 0m0.000s
AWK sum is 2181681 AWK sum is 2181681 AWK sum is 2181681
PERL sum is 2181681 PERL sum is 2181681 PERL sum is 2181681
BASH sum is 2181681 BASH sum is 2181681 BASH sum is 2181681
PYTHON2 sum is 2181681 PYTHON2 sum is 2181681 PYTHON2 sum is 2181681
PYTHON3 sum is 2181681 PYTHON3 sum is 2181681 PYTHON3 sum is 2181681
(また、このファイルを3回接続して126MBのデータを得たので、時間が3倍に増えました。)
Bashが勝利し、その後にAWKが続き、Perlが3位を獲得しました。PerlはAWKやSEDよりも優れています。、私のファイルが十分に大きくないのですか? )。
少し驚いたのは、Python 3とは何かでした。ゆっくり、Python 2の代わりに。なぜこれですか?
PS:私が使ったスクリプトが公開されましたここ。これは私のラップトップのファイル処理の上限でもあります(例:これ記事)
time cat atbats.csv > /dev/null
real 0m0.013s
user 0m0.001s
sys 0m0.012s