Schrift
[thread]6077[/thread]

Reguläre Ausdrücke durch anderes ersetzten... (Seite 6)

Leser: 2


<< |< 1 ... 3 4 5 6 >| >> 60 Einträge, 6 Seiten
Strat
 2004-02-25 22:13
#80152 #80152
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
die "tools" heissen subroutinen; du kannst damit nur messen, wie lange subroutinen brauchen, also den regex in eine eigene subroutine packen, dann wird sie von devel-dprof direkt erfasst. aber wenn du nur messen willst, wie lange sie braucht, verwende doch einfach CPAN:Benchmark
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
coax
 2004-02-26 04:14
#80153 #80153
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
Wenn man haeufig auf den gleichen String match soll ja ein auf den String zuvor angewendetes study(), die Ausfuehrung etwas beschleunigen. Benutzen tue ich es selbst nicht, waere doch aber mal interessant ob es wirklich von Vorteil ist study() anzuwenden.

Gruss Christian.
,,Das perlt aber heute wieder...'' -- Dittsche
Taulmarill
 2004-02-26 16:00
#80154 #80154
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
ahm, crains script is buggy.
ich weiss nicht genau warum, aber $_ kommt nicht bis zu den subroutinen durch.

hier is mein geändertes script:
Code: (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
#!/usr/bin/perl

use strict;
use Benchmark;

my @text = ('+5000*',
'ein langer Text ohne solche Rechenoperationen...bla fasel laber schwaller sabbel erzähl ...',
'8947573849575563542325375869676545343423232425347585764554534232432452673740-',
'8947573849575563542325375869676545343423232425347585764554534232432452673740+',
'8947573849575563542325375869676545343423232425347585764554534232432452673740*',
'8947573849575563542325375869676545343423232425347585764554534232432452673740/',
'89475738495755635423253758696765453434232324253475857645545342324324526737401',
'-9475738495755635423253758696765453434232324253475857645545342324324526737401',
'+9475738495755635423253758696765453434232324253475857645545342324324526737401',
'*9475738495755635423253758696765453434232324253475857645545342324324526737401',
'/9475738495755635423253758696765453434232324253475857645545342324324526737401',
);

for my $line (@text) {
print "timethesis für '$line'\n";

timethese(100000, {
A => sub {
if ( $line =~ m~(?:-|\+|\*|/)~) {}
},
B => sub {
if ( $line =~ m~-~ or m~\+~ or m~\*~ or m~/~) {}
},
C => sub {
if ( $line =~ m~[-+*/]~) {}
},
D => sub {
if ( $line =~ m~[-]~ or m~[+]~ or m~[*]~ or m~[/]~) {}
},
E => sub {
if (index($line, '-') > -1 or
index($line, '+') > -1 or
index($line, '*') > -1 or
index($line, '/') > -1) {}
},
});
}


und hier die ergebisse:
Code: (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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
root@ronin:~# perl test.pl
timethesis für '+5000*'
Benchmark: timing 100000 iterations of A, B, C, D, E...
A: 1 wallclock secs ( 0.49 usr + 0.00 sys = 0.49 CPU) @ 204081.63/s (n=100000)
B: 0 wallclock secs ( 0.56 usr + 0.00 sys = 0.56 CPU) @ 178571.43/s (n=100000)
C: 1 wallclock secs ( 0.39 usr + 0.00 sys = 0.39 CPU) @ 256410.26/s (n=100000)
(warning: too few iterations for a reliable count)
D: 0 wallclock secs ( 0.60 usr + 0.00 sys = 0.60 CPU) @ 166666.67/s (n=100000)
E: 0 wallclock secs ( 0.38 usr + 0.00 sys = 0.38 CPU) @ 263157.89/s (n=100000)
(warning: too few iterations for a reliable count)
timethesis für 'ein langer Text ohne solche Rechenoperationen...bla fasel laber schwaller sabbel erzähl ...'
Benchmark: timing 100000 iterations of A, B, C, D, E...
A: 15 wallclock secs (14.18 usr + 0.00 sys = 14.18 CPU) @ 7052.19/s (n=100000)
B: 0 wallclock secs ( 0.64 usr + 0.00 sys = 0.64 CPU) @ 156250.00/s (n=100000)
C: 2 wallclock secs ( 0.66 usr + 0.00 sys = 0.66 CPU) @ 151515.15/s (n=100000)
D: 2 wallclock secs ( 0.99 usr + 0.00 sys = 0.99 CPU) @ 101010.10/s (n=100000)
E: 2 wallclock secs ( 0.94 usr + 0.00 sys = 0.94 CPU) @ 106382.98/s (n=100000)
timethesis für '8947573849575563542325375869676545343423232425347585764554534232432452673740-'
Benchmark: timing 100000 iterations of A, B, C, D, E...
A: 11 wallclock secs (11.97 usr + 0.00 sys = 11.97 CPU) @ 8354.22/s (n=100000)
B: 0 wallclock secs ( 0.43 usr + 0.00 sys = 0.43 CPU) @ 232558.14/s (n=100000)
C: 2 wallclock secs ( 0.76 usr + 0.00 sys = 0.76 CPU) @ 131578.95/s (n=100000)
D: 1 wallclock secs ( 0.81 usr + 0.00 sys = 0.81 CPU) @ 123456.79/s (n=100000)
E: 0 wallclock secs ( 0.36 usr + 0.00 sys = 0.36 CPU) @ 277777.78/s (n=100000)
(warning: too few iterations for a reliable count)
timethesis für '8947573849575563542325375869676545343423232425347585764554534232432452673740+'
Benchmark: timing 100000 iterations of A, B, C, D, E...
A: 11 wallclock secs (11.96 usr + 0.00 sys = 11.96 CPU) @ 8361.20/s (n=100000)
B: 0 wallclock secs ( 0.62 usr + 0.00 sys = 0.62 CPU) @ 161290.32/s (n=100000)
C: 0 wallclock secs ( 0.75 usr + 0.00 sys = 0.75 CPU) @ 133333.33/s (n=100000)
D: 0 wallclock secs ( 0.95 usr + 0.00 sys = 0.95 CPU) @ 105263.16/s (n=100000)
E: 0 wallclock secs ( 0.52 usr + 0.00 sys = 0.52 CPU) @ 192307.69/s (n=100000)
timethesis für '8947573849575563542325375869676545343423232425347585764554534232432452673740*'
Benchmark: timing 100000 iterations of A, B, C, D, E...
A: 13 wallclock secs (11.99 usr + 0.00 sys = 11.99 CPU) @ 8340.28/s (n=100000)
B: 2 wallclock secs ( 0.64 usr + 0.00 sys = 0.64 CPU) @ 156250.00/s (n=100000)
C: 2 wallclock secs ( 0.75 usr + 0.00 sys = 0.75 CPU) @ 133333.33/s (n=100000)
D: 2 wallclock secs ( 0.95 usr + 0.00 sys = 0.95 CPU) @ 105263.16/s (n=100000)
E: 2 wallclock secs ( 0.70 usr + 0.00 sys = 0.70 CPU) @ 142857.14/s (n=100000)
timethesis für '8947573849575563542325375869676545343423232425347585764554534232432452673740/'
Benchmark: timing 100000 iterations of A, B, C, D, E...
A: 13 wallclock secs (12.00 usr + 0.00 sys = 12.00 CPU) @ 8333.33/s (n=100000)
B: 2 wallclock secs ( 0.64 usr + 0.00 sys = 0.64 CPU) @ 156250.00/s (n=100000)
C: 1 wallclock secs ( 0.75 usr + 0.00 sys = 0.75 CPU) @ 133333.33/s (n=100000)
D: 2 wallclock secs ( 0.95 usr + 0.00 sys = 0.95 CPU) @ 105263.16/s (n=100000)
E: 2 wallclock secs ( 1.00 usr + 0.00 sys = 1.00 CPU) @ 100000.00/s (n=100000)
timethesis für '89475738495755635423253758696765453434232324253475857645545342324324526737401'
Benchmark: timing 100000 iterations of A, B, C, D, E...
A: 13 wallclock secs (12.01 usr + 0.00 sys = 12.01 CPU) @ 8326.39/s (n=100000)
B: 0 wallclock secs ( 0.62 usr + 0.00 sys = 0.62 CPU) @ 161290.32/s (n=100000)
C: 1 wallclock secs ( 0.60 usr + 0.00 sys = 0.60 CPU) @ 166666.67/s (n=100000)
D: 2 wallclock secs ( 0.95 usr + 0.00 sys = 0.95 CPU) @ 105263.16/s (n=100000)
E: 2 wallclock secs ( 0.91 usr + 0.00 sys = 0.91 CPU) @ 109890.11/s (n=100000)
timethesis für '-9475738495755635423253758696765453434232324253475857645545342324324526737401'
Benchmark: timing 100000 iterations of A, B, C, D, E...
A: 1 wallclock secs ( 0.41 usr + 0.00 sys = 0.41 CPU) @ 243902.44/s (n=100000)
B: 0 wallclock secs ( 0.34 usr + 0.00 sys = 0.34 CPU) @ 294117.65/s (n=100000)
(warning: too few iterations for a reliable count)
C: 1 wallclock secs ( 0.39 usr + 0.00 sys = 0.39 CPU) @ 256410.26/s (n=100000)
(warning: too few iterations for a reliable count)
D: 0 wallclock secs ( 0.44 usr + 0.00 sys = 0.44 CPU) @ 227272.73/s (n=100000)
E: 1 wallclock secs ( 0.26 usr + 0.00 sys = 0.26 CPU) @ 384615.38/s (n=100000)
(warning: too few iterations for a reliable count)
timethesis für '+9475738495755635423253758696765453434232324253475857645545342324324526737401'
Benchmark: timing 100000 iterations of A, B, C, D, E...
A: 0 wallclock secs ( 0.50 usr + 0.00 sys = 0.50 CPU) @ 200000.00/s (n=100000)
B: 1 wallclock secs ( 0.64 usr + 0.00 sys = 0.64 CPU) @ 156250.00/s (n=100000)
C: 0 wallclock secs ( 0.38 usr + 0.00 sys = 0.38 CPU) @ 263157.89/s (n=100000)
(warning: too few iterations for a reliable count)
D: 0 wallclock secs ( 0.96 usr + 0.00 sys = 0.96 CPU) @ 104166.67/s (n=100000)
E: 0 wallclock secs ( 0.46 usr + 0.00 sys = 0.46 CPU) @ 217391.30/s (n=100000)
timethesis für '*9475738495755635423253758696765453434232324253475857645545342324324526737401'
Benchmark: timing 100000 iterations of A, B, C, D, E...
A: 1 wallclock secs ( 0.49 usr + 0.00 sys = 0.49 CPU) @ 204081.63/s (n=100000)
B: 0 wallclock secs ( 0.62 usr + 0.00 sys = 0.62 CPU) @ 161290.32/s (n=100000)
C: 0 wallclock secs ( 0.38 usr + 0.00 sys = 0.38 CPU) @ 263157.89/s (n=100000)
(warning: too few iterations for a reliable count)
D: 2 wallclock secs ( 0.96 usr + 0.00 sys = 0.96 CPU) @ 104166.67/s (n=100000)
E: 1 wallclock secs ( 0.66 usr + 0.00 sys = 0.66 CPU) @ 151515.15/s (n=100000)
timethesis für '/9475738495755635423253758696765453434232324253475857645545342324324526737401'
Benchmark: timing 100000 iterations of A, B, C, D, E...
A: 0 wallclock secs ( 0.53 usr + 0.00 sys = 0.53 CPU) @ 188679.25/s (n=100000)
B: 0 wallclock secs ( 0.63 usr + 0.00 sys = 0.63 CPU) @ 158730.16/s (n=100000)
C: 1 wallclock secs ( 0.39 usr + 0.00 sys = 0.39 CPU) @ 256410.26/s (n=100000)
(warning: too few iterations for a reliable count)
D: 0 wallclock secs ( 0.94 usr + 0.00 sys = 0.94 CPU) @ 106382.98/s (n=100000)
E: 0 wallclock secs ( 0.84 usr + 0.00 sys = 0.84 CPU) @ 119047.62/s (n=100000)
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
ppm1
 2004-02-26 18:57
#80155 #80155
User since
2003-09-14
142 Artikel
BenutzerIn
[default_avatar]
Kleine Frage noch zu der Auswertung:


A: 1 wallclock secs ( 0.49 usr + 0.00 sys = 0.49 CPU) @ 204081.63/s (n=100000)


Was bedeutet 1 wallclock secs?
Was bedeutet 0.49 usr ?
Was bedeutet 0.00 sys ?
Was bedeutet 0.49 CPU?
Was bedeutet 204081.63/s?

Was ist besser, wenn was höher ist oder was geringer?
sri
 2004-02-26 20:34
#80156 #80156
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=ppm1,26.02.2004, 17:57]Was bedeutet 1 wallclock secs?
Was bedeutet 0.49 usr ?
Was bedeutet 0.00 sys ?
Was bedeutet 0.49 CPU?
Was bedeutet 204081.63/s?

Was ist besser, wenn was höher ist oder was geringer?[/quote]
Das is doch relativ selbsterklärend?

Aber ich vermute du verwendest ein minderwertiges Betriebssystem aus Redmond, bei dem solche Angaben eher selten vorkommen. ;)

"wallclock secs" sind die Wanduhr-sekunden, also die reale verbrauchte Zeit.
"usr" ist die Zeit die der Prozessor für Userspace Kram gebraucht hat,
also durch vom Kernel gemanagete Prozesse.
"sys" ist die Zeit die der Prozessor für Kernelspace Kram gebraucht hat, also für den Kernel selbst.
"cpu" ist die gesamte Zeit die der Prozessor gebraucht hat.
"xxx/s" ist die Zahl der Subroutinenaufrufe pro sekunde.

Bei allem ausser der Zahl der Subroutinenaufrufe ist kleiner besser.
Crian
 2004-02-27 00:44
#80157 #80157
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
[ Hi Jürgen :) ]

... und bis auf den letzten Wert gilt also: je kleiner desto besser. Die Wallclock seconds sind eigentlich von sehr geringer Aussagekraft, ich denke, man kann den Vergleich an "cpu" festmachen.

Ich finde es sehr erstaunlich, dass $_ nicht durchgereicht wird. Dann ist aber eigentlich nicht das Skript, sondern das Modul buggy ;) ... dem sollte man vielleicht mal nachgehen.\n\n

<!--EDIT|Crian|1077835753-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
sri
 2004-02-27 02:10
#80158 #80158
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=Crian,26.02.2004, 23:44]Ich finde es sehr erstaunlich, dass $_ nicht durchgereicht wird. Dann ist aber eigentlich nicht das Skript, sondern das Modul buggy ;) ... dem sollte man vielleicht mal nachgehen.[/quote]
Naja, es ist nicht wirklich buggy, $_ ist lediglich local.

Warum das so ist weiss ich leider nicht genau, aber es macht
Sinn das es die coderefs voneinander abschirmt, um
gegenseitige beeinflussung zu verhindern. ;)

Hier der schuldige codeschnipsel aus Benchmark.pm:
Code: (dl )
1
2
$subcode = "sub { for (1 .. $n) { local \$_; package $pack; &\$c; } }";
$subref = eval $subcode;
Taulmarill
 2004-02-27 11:41
#80159 #80159
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
ahhh, it`s not a bug, it`s a feature :D\n\n

<!--EDIT|Taulmarill|1077874941-->
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Crian
 2004-02-27 14:53
#80160 #80160
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Aha, gut, das muss man dann wohl einfach wissen. Mir war es auch schon komisch vorgekommen, dass so wenig zeitliche Unterschiede aufgetaucht waren.

Wie war das noch mit "Ein Feature, das man nicht abstellen kann, ist ein Bug?" ;)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
pq
 2004-02-27 15:10
#80161 #80161
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=Crian,27.02.2004, 13:53]Wie war das noch mit "Ein Feature, das man nicht abstellen kann, ist ein Bug?" ;)[/quote]
=)\n\n

<!--EDIT|pq|1077887447-->
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
<< |< 1 ... 3 4 5 6 >| >> 60 Einträge, 6 Seiten



View all threads created 2004-02-16 23:16.