[Moscow.pm] Статистика использования встроенных perl функций

Ruslan Zakirov ruz на bestpractical.com
Ср Мар 17 14:15:59 PDT 2010


Привет,

Когда мы обсуждали задачу со сложением большого количества чисел, я
подумал, что некоторые функции промежуточного уровня в perl не
эффективны.  Прежде чем идти что-то доказывать p5p на алгоритмах,
решил написать инструмент, который сможет продемонстрировать проблемы
на реальных приложениях. Так и родился недавно Devel-PPAP
(http://github.com/ruz/Devel-PPAP).

Основная цель - построить статистику использования различных pp_*
функций, которую можно будет использовать для улучшения ядра perl или
выявления аномалии в своем и/или чужом коде. Дорога еще длинная
впереди, но уже сейчас можно обратить внимание на интересные детали:

* shift - 83000 вызовов и из них только 1000 с аргументом (то есть
shift @XXX;), но при этом для "shift;" в любом случае дерево будет
построено shift(rv2av(gv(PL_defgv))). По моим расчетам на 83000 rv2av
и gv можно сэкономить 0.02 секунды. Не много, но и не мало.

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

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

-- 
Best regards, Ruslan.


Подробная информация о списке рассылки Moscow-pm