Thread ne vs. RegEx (6 answers)
Opened by pktm at 2008-08-13 01:22

Linuxer
 2008-08-14 02:28
#113485 #113485
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Die Regexkanone ist ausserdem langsamer als der direkte Vergleich...

Code: (dl )
1
2
3
4
5
6
$ perl /tmp/compare.pl 
Rate regex_alter_catch regex_alter_nocatch regex_class equal
regex_alter_catch 1286220/s -- -29% -41% -63%
regex_alter_nocatch 1803742/s 40% -- -17% -48%
regex_class 2163145/s 68% 20% -- -37%
equal 3442791/s 168% 91% 59% --


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/perl
# vi:ts=4 sw=4 et:
use strict;
use warnings;
use Benchmark qw( cmpthese );

my $text = 'a';

cmpthese(
    -1, {
        'equal' => sub {
            return if ( $text eq 'a' );
        },
        'regex_class' => sub {
            return if ( $text =~ m/^[ab]$/ );
        },
        'regex_alter' => sub {
            return if ( $text =~ m/^(a|b)$/ );
        },
        'regex_alter_nocatch' => sub {
            return if ( $text =~ m/^(?:a|b)$/ );
        },
    }
);


Und mit $text = 'b' komm ich zu folgendem Ergebnis:

Code: (dl )
1
2
3
4
5
                         Rate regex_alter_catch regex_alter_nocatch regex_class equal
regex_alter_catch 1293473/s -- -17% -39% -76%
regex_alter_nocatch 1563926/s 21% -- -26% -71%
regex_class 2104367/s 63% 35% -- -61%
equal 5367820/s 315% 243% 155% --
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread ne vs. RegEx