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.
Copyright: Except where otherwise noted the content of this site is licensed under a
Creative Commons Attribution License. Текстът на договора за ползване на български
Copyright (cc) 2003-2011 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 08:42