А сейчас заменим динамическое регулярное
Напечатается
4 wallclock secs ( 4.74 usr + 0.00 sys = 4.74 CPU)
А сейчас заменим динамическое регулярное выражение подшаблоном \d+:
use Benchmark;
$_='Далее стоит 13 нулей: 0000000000000' x 13000; my $re=qr /(\d+)\D+\d+/; my $t1=new Benchmark; for (1..1000000) { /$re/; } my $t2=new Benchmark; print timestr(timediff $t2,$t1);
В этот раз время уменьшится:
1 wallclock secs ( 1.38 usr + 0.00 sys = 1.38 CPU)
Замечаем, что встроенный код и динамические регулярные выражения даже в простом случае увеличивают время выполнения регулярного выражения примерно в 3 раза.
Аналогично заметно возрастает время выполнения оператора подстановки s/// с модификатором e. Были практические случаи, когда оператор подстановки с модификатором e замедлял работу программы в десятки раз.
|
|
|
© 2003-2007 INTUIT.ru. Все права защищены. |
Содержание Назад
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий