얼마 전에 간단한 csv 처리 성능 테스트를 수행했고 그 결과를 커뮤니티와 공유하고 싶었습니다. 어떤 테스트가 더 정확하고 공정할 수 있는지 지적해 주실 수 있을 것입니다.
csv
먼저 다음과 같이 42MB 파일을 꺼냈습니다 .
이미지의 첫 번째 부분은 csv
파일의 실제 내용이고, 두 번째 부분에는 처리하려는 줄이 포함되어 있습니다. 원칙은 다음과 같습니다.
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이 무엇인지였습니다.느리게, 파이썬 2 대신. 왜 이런거야?
추신 : 내가 사용한 스크립트가 게시되었습니다여기. 이것은 또한 내 노트북의 파일 처리의 상한선이기도 합니다(예:이것기사)
time cat atbats.csv > /dev/null
real 0m0.013s
user 0m0.001s
sys 0m0.012s