Thread Performanceangaben unpack vs. regex (10 answers)
Opened by mr-sansibar at 2007-09-24 14:17

mr-sansibar
 2007-09-24 16:19
#99926 #99926
User since
2006-04-13
90 Artikel
BenutzerIn
[default_avatar]
so jetzt habe ich beiden diese Bedingung eingebaut, wegen der Chancengleichheit !
aber meine frage ist dadurch immer noch nicht beantwortet :-(

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
use strict;
use warnings;
use Benchmark;
 
my $line = 'x' x 100;
 
open my $frontend, '>>', '/dev/null' or die $!;
 
Benchmark::cmpthese(-1, {
    _regex => \&_regex,
   # _unpack1 => \&_unpack1,
    _unpack2 => \&_unpack2
 });
 
 sub _regex {
     my $tmp_line = $line;
     if( length $tmp_line < 4000 ){
        $tmp_line .= "\t" x 30;
    }
    else{
         $tmp_line =~ s/(.{4000})/$1\t/g;
     }
     print $frontend $tmp_line;
 }
 
  
 sub _unpack2 {
     my $tmp_line = $line;
     my $len = length($tmp_line);
     my $pos = 0;
     my $tab = 30;
     
     if( length $tmp_line < 4000 ){
        $tmp_line .= "\t" x 30;
    }
    else {
     while ( my $s = unpack("x$pos A4000", $tmp_line) ) {
         $tab--;
         print $frontend "$s\t";
         $pos += 4000;
         last if $pos >= $len;
     }
    }
     print $frontend "\t" x $tab;
     print $frontend "\n";
}


erst bei einer stringlänge >4000 werde beide verfahren deutlich !

View full thread Performanceangaben unpack vs. regex