< HomePage | Снимки
<- Сряда, 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 ]
Коментари

Всъщност в 3.70 успях да разкарам и grep-а за всеки пакет :) Вече външните команди не ме притесняват.

Написа Георги Чорбаджийски (www) на 10-Jul-2006 11:42


Valid XHTML 1.0! Valid CSS!