Привет, Когда мы обсуждали задачу со сложением большого количества чисел, я подумал, что некоторые функции промежуточного уровня в 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 mailing list [email protected] | http://moscow.pm.org
