Стандартный подход
time sort -u /var/log/backup/2011-05-09.log > sort_standard
real 2m4.258s
user 2m3.716s
sys 0m0.344s
Хитрый вариант:
time LC_ALL=C sort -u /var/log/backup/2011-05-09.log > sort_fast
real 0m10.781s
user 0m8.965s
sys 0m0.548s
Результаты:
md5sum sort_fast
a1a339709059142d8700a2314481544b sort_fast
md5sum sort_standard
7a8ea0f6f1bdccc6fd0551b49aa3c99c sort_standard
wc -l sort_fast
295038 sort_fast
wc -l sort_standard
291784 sort_standard
ls -alh | grep sort
-rw-r--r-- 1 root root 30M 2011-05-09 02:55 sort_fast
-rw-r--r-- 1 root root 30M 2011-05-09 02:55 sort_standard
Подозрения, что побились имена в UTF-8 в результате такой сортировки, но не уверен, у кого идеи, как быстро это узнать?
Источник: http://ranadip.wordpress.com/2010/03/12/tech-trivia-linux-unusually-slow-performance-of-grepsortother-text-processing-commands/
Например так
ReplyDeletediff -y sort_fast sort_standard | grep '|'