Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Renat Araslanow                      2:5011/119     15 Jan 2001  00:36:16
 To : All
 Subject : regexp
 -------------------------------------------------------------------------------- 
 
 
 почему 1 while s/(\d)(\d\d\d)(?!\d)/$1 $2/; медленне в ~20 раз чем
 1 while s/(\d+)(\d{3,})/$1 $2/; ?
 
 я так понял это из-за свойства "жадности" +, но тогда как проходит сравнение?
 
 вот програмка и рез-ты% (в файл 50 000 байт - одна строка из 1)
 
 #!perl
 use Benchmark;
 open (FH,"ok")||die "can`t";
 $_=<FH>;
     $t0 = new Benchmark;
     1 while s/(\d)(\d\d\d)(?!\d)/$1 $2/;
     #1 while s/(\d+)(\d{3,})/$1 $2/;
     $t1 = new Benchmark;
     $td = timediff($t1, $t0);
     print "the code took:",timestr($td),"\n";
 
 >perl 3.pl
 
 the code took:26 wallclock secs (24.67 usr +  0.03 sys = 24.70 CPU)
 
 >perl 3.pl
 
 the code took:445 wallclock secs (418.92 usr +  0.41 sys = 419.33 CPU)
 
 perl от активстейта 5.6.0.620
 
                     [TEAM Чайник с программным управлениемЪ]
             [Преждевременная оптимизация -- корень всех зол Д. Кнут]
 --- спасибо фиpме AMD за Celeron от фирмы intel :-)
  * Origin: BBS in DEN! DOWN: 644-888 23-07 (2:5011/119)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 regexp   Renat Araslanow   15 Jan 2001 00:36:16 
 Re: regexp   Alexander Babanov   14 Jan 2001 22:31:19 
 Re: regexp   Renat Araslanow   17 Jan 2001 14:15:07 
 Re: regexp   Alexander Babanov   18 Jan 2001 01:33:50 
Архивное /ru.perl/22793a61f32c.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional