Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5885[/thread]

Arbeiten mit Strings: Entfernung von Leerzeichen (Seite 2)

Leser: 3


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
havi
 2003-11-07 19:50
#70009 #70009
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
[quote=esskar,07.11.2003, 18:45]bzw. wenn es wirklich leerzeichen sind...

Code: (dl )
s!^ +!!;


@havi: das g kann weg, weil ja nu einmal alle leerzeichen am anfang entfernt werden müssen... wenn das einmal passiert ist, gibt es keinen teilstring in dem string, welches nur leerzeichen enthält und des erstes zeichen das erste zeichen des strings ist... :)

hab keine ahnung wie perl intern gestrickt ist, aber g könnte in dem fall ne bremse sein[/quote]
Stimmt, ohne g ist Perl, in diesem Fall, laut Benchmark sogar schneller!

Gruss
pq
 2003-11-07 23:06
#70010 #70010
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=havi,07.11.2003, 18:46]
Code: (dl )
1
2
3
Benchmark: timing 1000000 iterations of index, regex...
    index:  2 wallclock secs ( 1.30 usr +  0.00 sys =  1.30 CPU) @ 771010.02/s (n=1000000)
    regex:  2 wallclock secs ( 1.09 usr +  0.00 sys =  1.09 CPU) @ 913242.01/s (n=1000000)
[/quote]
@havi: mit welchem code hast du denn das ergebnis gekriegt?
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use Benchmark;
$s=($" x 1000)."test";
sub a { $_=$s;s/^ +//; }
sub b { $_=$s;while(index($_, " ") == 0) { $_ = substr($_, 1) }}

timethese(10000, {a=>\&a,b=>\&b});

Ergebnis:
Benchmark:
timing 10000 iterations of
a, b
...

        a:  0 wallclock secs ( 0.06 usr +  0.00 sys =  0.06 CPU) @ 166666.67/s (n=10000)

           (warning: too few iterations for a reliable count)

        b: 10 wallclock secs ( 9.18 usr +  0.00 sys =  9.18 CPU) @ 1089.32/s (n=10000)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Strat
 2003-11-08 01:20
#70011 #70011
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=pq,07.11.2003, 22:06][/quote]
wie sieht eigentlich folgender Code aus?
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
use Benchmark;
$s=($" x 1000)."test";
sub a { $_=$s;s/^ +//; }
sub b { $_=$s;while(index($_, " ") == 0) { $_ = substr($_, 1) }}
sub c { $_=$s;
while (1) { $last = index($_, " ", $pos);
$last > -1 and $pos = $last+1;
$last == -1 and last;
} substr($_, 0, $pos) = "";
} # c

timethese(10000, {a=>\&a,b=>\&b,c=>\&c} );

Code: (dl )
1
2
3
4
5
6
Benchmark: timing 10000 iterations of a, b, c...
a: 0 wallclock secs ( 0.03 usr + 0.00 sys = 0.03 CPU) @ 312500.00/s (n=10000)
(warning: too few iterations for a reliable count)
b: 9 wallclock secs ( 8.50 usr + 0.00 sys = 8.50 CPU) @ 1176.47/s (n=10000)
c: 0 wallclock secs ( 0.03 usr + 0.00 sys = 0.03 CPU) @ 322580.65/s (n=10000)
(warning: too few iterations for a reliable count)
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2003-11-07 09:04.