[Moscow.pm] функция не из нашего пакета
Dmitry E. Oboukhov
unera на debian.org
Пн Дек 29 02:09:31 PST 2008
>> *{$name}=sub { &$c };
VVP> зачем враппер?
VVP> *$name = \&$c;
ну потому что он содержит еще код, а в данном примере этот код не приведен :)
профайлер свой делаю :)
>> но если функция представляет собой константную функцию (например
>> константы в каком-то модуле вроде Errno) то получаем варнинг про
>> попытку переопределения константной функции
>>
>> Constant subroutine ...
>>
>> Я ковырялся в поисках директивы которая отменяет этот варнинг, но
>> не нашел варианта. Так же не нашел можно ли по ссылке на функцию определить
>> не константная ли она?
>>
>> сейчас тупо перехватил варнинг
>> $SIG{__WARN__}=sub { $is_constant=1 if $_[0]=~/^Constant sub/ };
VVP> константные сабы компилятся и их переопределение вызывает некоторые
VVP> "неприятные" для интерпретатора операции.
это понятно, поэтому хочется их как-то отделить от остальных
и не переопределять
>> и после переопределения если $is_constant установлено в true то
>> так вылавливаю константные ф-ции. хотелось бы от этого хака избавиться
VVP> Вообще на мой взгляд делаете что-то странное :)
VVP> Не хотите расписать задачу в более общем виде? Я так думаю есть более
VVP> элегантное решение.
ну обычная задача профайлинга:
проходим по полному списку всех функций
вешаем на них врапперы, измеряем время итп
отсюда сразу растут следующие задачи:
1. одна функция может быть импортирована в кучу пакетов, соответственно
ее надо (желательно) переопределить лишь один раз
2. хорошо бы именно импортированные алиасы отбросить
3. отделить константные функции и их не трогать
4. не конфликтовать с модулями которые сами делают аналогичную работу
--
... mpd is off
. ''`. Dmitry E. Oboukhov
: :’ : email: unera на debian.org jabber://UNera@uvw.ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: отсутствует
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20081229/e955971d/attachment.bin>
Подробная информация о списке рассылки Moscow-pm