7 Einträge, 1 Seite |
1
2
3
4
if( $my_var ne "a" and $my_var ne "b" ) { ...keks... }
# oder
if( $my_var !~ m/^(a|b)$/ ) { ...keks... }
betterworld+2008-08-12 23:42:08--Es tut ja nicht mal das Gleiche...
Das zweite fuehrt den Block auch dann aus, wenn $my_var = "a\n" ist.
Vermutlich ist das erste auch noch schneller, das kannst Du ja benchmarken.
Edit: Ach ja, und ich glaube, Du meinst wohl beim ersten auch "and" statt "or".
pktm+2008-08-12 23:50:23--Mal sehen, wann ich zu dem Benchmark komme.
unless ( $my_var eq "a" or $my_var eq "b" ) { ...keks... }
unless ( $my_var eq "a" or $my_var eq "b" ) { ...keks... }
if ( $my_var ne "a" and $my_var ne "b" ) { ...keks... }
if ( not ( $my_var eq "a" or $my_var eq "b" ) ) { ...keks... }
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% --
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)$/ ); }, } );
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% --
7 Einträge, 1 Seite |