[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Что тяжелее - внешний процесс или вызов библиотеки?



Oleksandr Gavenko -> debian-russian@lists.debian.org  @ Tue, 04 Feb 2014 22:12:13 +0200:

 >> Впрочем, это рассуждение на пальцах. Если вопрос принципиально важен -
 >> замерьте, не поленитесь.

 OG> Как мерить?

 OG> "strace -f" - посчитать число системных вызовов?

 OG> Или time?

 OG> Или gettimeofday?

 OG> Или http://en.wikipedia.org/wiki/Time_Stamp_Counter?

 OG> Я работал с оптимизаций криптопримитивов - там использовали TSC, а как
 OG> работать с более крупными исполняемыми кусками - не представляю...

 OG> Мне кажется что микосекунд от gettimeofday достаточно для замеров.

 OG> Как обычно - в цикле выполнить много раз и разницу во времени поделить на
 OG> число итераций?

Для начала - подумать, что измеряем.  Если ты работал с оптимизацией, то
ты в курсе, что прежде чем оптимизировать, надо сделать профайлинг, и НЕ
пытаться оптимизировать ничего, кроме того, что он показывает как узкое
место.

Сколько раз в секунду вызывается скрипт, про который идет речь?  Если
меньше 10, то оптимизировать надо время писателя или время читателя (в
зависимости от того, одноразовый он или подразумевается его
поддерживать), а не время выполнения.

Соседнего твоего письма это в той же мере касается.  Какая разница, один
раз или двадцать оно сканирует десяток простеньких файлов по десять
строк максимум в каждом, если после первого же сканирования все они
осядут в кэше, а операция производится раз в сутки, и подобных операций
в сутки десятка два максимум?

Нет, конечно, даже там было что соптимизировать - там повторяющийся код.
Но если подумать о том, что тут как раз надо оптимизировать время
читателя, то получается, что этот код - оптимальный.  Даже без чтения
мана на apt-config практически сразу понятно, что он делает.  Любая
попытка что-то соптимизировать даже просто по объему кода (учитывая
возможность copy-paste, даже время писателя уже особо не соптимизируешь)
приводит к коду, который читается хуже.

Можно было бы ради однопроходности обучить apt-config синтаксису вроде

apt-config shell MaxAge=APT::Archives::MaxAge,APT::Periodic::MaxAge Cache=Dir::Cache::archives/d

но тут уже читателю придется лезть в ман, чтобы понять, в каком порядке
приоритета даны варианты, из какой настройки заполнять переменную -
убывания или возрастания.  В том коде понятно, это общее место
императивного программирования - последний приоритетнее.

Но вот положа руку на сердце - который из вариантов читается легче?  Мне
кажется, тот, где несколько проходов по конфигам.


Reply to: