Thread happy birthday mailer (18 answers)
Opened by mika at 2011-02-02 22:49

Linuxer
 2011-02-03 22:07
#145309 #145309
User since
2006-01-27
3882 Artikel
HausmeisterIn

user image
Da mögen sich die Geister dran scheiden. Die gefundene Lösung ist gut.

Nur weil man Dinge mit Regulären Ausdrücken lösen kann, muss man das nicht gleich tun ;)

Gerade so einfache Sachen wie hier sind genau die Sachen, wofür es substr() und andere Funktionen gibt.

Was im Zweifelsfall "besser" ist, kann man beispielsweise durch Benchmarks ermitteln:

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
25
26
27
28
29
30
#! /usr/bin/perl
# vim:ts=4 sw=4 sts=4 et nu fdc=3:
use strict;
use warnings;

use Benchmark qw( cmpthese );

my $date1 = '2010-08-24';   # 
my $date2 = '2009-13-22';   # invalid date, but who cares


#> sub routines
#> ----------------------------------------------------------------------------

sub strcmp1 {
    my ($d1,$d2,$p,$l) = @_;
    substr($d1,$p,$l) ne substr($d2,$p,$l)
}


#> main script
#> ----------------------------------------------------------------------------

cmpthese( -1, {
    direct => sub { substr($date1,5,5) ne substr($date2,5,5) },
    regex  => sub { ($date1=~/^.....(.{5})/)[0] ne ($date2=~/^.....(.{5})/)[0] },
    sub1   => sub { strcmp1($date1,$date2,5,5) },
});

__END__


Mein Ergebnis:
Code: (dl )
1
2
3
4
            Rate  regex   sub1 direct
regex 608962/s -- -29% -76% # slowest
sub1 860159/s 41% -- -66%
direct 2541562/s 317% 195% -- # fastest
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 happy birthday mailer