大容量ファイル処理のパフォーマンス

大容量ファイル処理のパフォーマンス

しばらく前に簡単なcsv処理パフォーマンステストを実行し、その結果をコミュニティと共有したかったのです。どのテストがより正確で公正であるかを指摘してください。

csvまず、次のように42MBファイルを取り出しました。

CSVデータ

画像の最初の部分は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

関連情報