The Diary
Дневникът на Георги
<- Сряда, 5 Юли 2006 | Начална страница | Петък, 7 Юли 2006 ->
Четвъртък, 6 Юли 2006
Цял ден си играх да оптимизирам SlackCheck и резултата е налице в новата версия 3.60.
В момента скриптовете за обновяване се генерират около три пъти по-бързо, което много ме радва, защото мразя да си губя времето :) Оптимизацията на shell скриптовете не е особено трудна работа ако на човек му се занимава. Правилата са прости - викай по-малко външни команди, кеширай резултатите им и където е възможно ползвай вградените трикове на шела вместо пак прословутите външни команди. Избягвай излишните cat и pipes.
За да видите откъде да започнете и коя външна команда колко пъти се изпълнява е може
да ползвате следния трик:
strace -f КОМАНДА ПАРАМЕТРИ 2>&1 | \
grep 'execve(' | sed -e 's/^.*execve("//' -e 's/".*$//' | \
sort | uniq -c | sort -rn
Резултатите от горното за старата версия 3.50 при генериране на тестов файл за обновяване на 220 нови пакета, при мен бяха следните:
792 /usr/bin/rev
413 /bin/grep
396 /bin/head
396 /bin/cut
286 /bin/basename
6 /bin/cat
5 /bin/rm
2 /bin/sed
1 /usr/bin/xargs
1 /usr/bin/dirname
1 /bin/sort
1 /bin/mkdir
1 /bin/echo
1 ./slcheck_v3.50.sh
Време (time ./slcheck_v3.50.sh --local --gen)
real 0m9.153s
user 0m2.284s
sys 0m4.160s
В резултат от оптимизациите отпаднаха много команди:
412 /bin/grep
4 /bin/rm
4 /bin/cat
3 /bin/sed
2 /usr/bin/xargs
2 /usr/bin/rev
2 /bin/wc
2 /bin/echo
1 /usr/bin/dirname
1 /bin/yes
1 /bin/sort
1 /bin/paste
1 /bin/mv
1 /bin/mkdir
1 /bin/head
1 /bin/cut
1 ./slcheck_v3.60.sh
Време (time ./slcheck_v3.60.sh --local --gen)
real 0m3.644s
user 0m0.740s
sys 0m0.916s
Опитах още няколко трика, за да избегна извикването на grep за всеки пакет в дистрибуцията, но по-бързо не успях да го направя. Засега му стига толкова.
[ Коментари: 1 | Добави коментар ]Коментари
Добавяне на коментар
Disclaimer: Except where otherwise noted all opinions expressed here are personal
opinions of the author and do not reflect official opinions of my employer or
any other person, company or organization associated with the author.
Creative Commons Attribution License. Текстът на договора за ползване на български
Copyright (cc) 2003-2008 Georgi Chorbadzhiyski. Some rights reserved.
Comments, texts and pictures not signed by me are property of their respective owners.
Страницата е генерирана от Glog v3.99-test
Всъщност в 3.70 успях да разкарам и grep-а за всеки пакет :) Вече външните команди не ме притесняват.
Написа Георги Чорбаджийски (www) на 10-Jul-2006 11:42