Дичайше радуют меня книжки про программирование на perl - практически в любой можно узнать много нового, убедиться что perl ты совершенно не знаешь и вообще всю жизнь использовал неправильно
что немедленно повергает в пучину тоски и уныния
Вот давеча читаю я например второе издание
Effective Perl Programming исхожу пеной от бессилия и сознания собственной тупости и невежества и в item 33 вижу следующий совет - если вы в своей гениальной программе хотя бы один только раз используете переменные $`, $& или $', то
вообще любое регулярное выражение в вашей программе будет заполнять их при выполнении. Естественно не поверив, бросился немедленно в пятитысячный раз перечитывать perldoc perlre и таки да:
WARNING: Once Perl sees that you need one of $&
, $`
, or $'
anywhere in the program, it has to provide them for every pattern match. This may substantially slow your program.
Все еще не веря глазам своим сделал grep по стандартным перловым пакетам на предмет использования этих
чорных магических переменных - практически не используются, разве что в Pod::Html.pm и Tk::Reindex
Заодно нашел аналогичное
зловещее предупреждение в B::Lint.pm:
This option warns whenever one of the regexp variables $', $& or $' is used. Any occurrence of any of these variables in your program can slow your whole program down
Надо будет прошерстить на следующей неделе всю невероятную кучу своих скриптов и сделать с этим уже чего-нть.
Интересно было бы после твоего упражнения понять насколько скрипты стали быстрее.
ОтветитьУдалитьу меня есть специальный наборчик тестовых данных размером 19Gb - могу на нем прогнать. В текущей версии он жуется 2621 секунд примерно
ОтветитьУдалитьа вообще - вы скци ?
если кому интересно - после выкидывания всяких магических переменных скрипт на одном и том же наборе данных отработал за 1593 секунды против 2102 в старой версии
ОтветитьУдалитьмой невооруженный взгляд видит ускорение на четверть