728x90
텍스트 파일 내용중에 일부를 다른 문자열로 치환하기 위해 sed 로 실행해보았다.
텍스트 파일은 12 GB 정도, 서버 : CPU Intel Xeon 2.6 GHz, RAM 4GB
# sed 's/AAA/BBB/g' text > conv_text
실행시간 : 대략 20분에서 30분에서 작업이 종료.
-> sed 자체에서 변경하는 부분이 문제일 수도 있지만, redirect 로 다른 파일로 저장하는 것도 실행 시간에 문제가 되었을 것이다.
perl 을 사용해서 동일한 작업을 수행했다.
# time perl -pe 's/AAA/BBB/g' text
real 6m51.624s
user 1m3.129s
sys 0m42.110s
-> 대략 6,7분 사이에 완료되었다. 백업파일 옵션을 안줘서 그런가해서 다시한번 테스트 해보았다.
# time perl -ibak -pe 's/AAA/BBB/g' text
real 6m45.249s
user 1m4.498s
sys 0m42.332s
-> 시간이 더 적게 나온거는 오차가 있겠지만, "text.bak" 원본파일도 같이 생성되어도 작업이 6,7 분에 완료되었다.
perl 이 대용량 파일처리에 우수하다는 얘기는 들어보았지만 실제 사용하기는 처음인데, 이런 차이가 있을 줄은 몰랐다. perl 을 사용해서 파일 처리 테스트를 많이 적용해 보아야 겠다.
참고 :
'Engineering > Etc' 카테고리의 다른 글
stack 깨질때 gcc compile 옵션 (0) | 2012.07.10 |
---|---|
wordpress 설치시 ftp 업데이트를 안전하게 하기위해 ftps 사용 (0) | 2012.05.15 |
WORM(write once read many) (0) | 2012.02.02 |
Windows XP 에서 필요없는 하위 디렉토리/파일 삭제 (0) | 2012.01.26 |
centos 64-bit 머신에서 32-bit binary 실행 (0) | 2012.01.18 |