Schrift
[thread]6077[/thread]

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

Leser: 2


<< |< 1 2 3 4 5 6 >| >> 60 Einträge, 6 Seiten
Crian
 2004-02-20 11:07
#80142 #80142
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
@eisbeer danke, aber Du testest jetzt immer auf diesem einen String. Für einen aussagefähigen Test muss man wissen, wie ungefähr die Daten desjenigen aussehen, der den Code einsetzt. Vielleicht hat er sehr viele sehr lange Texte, in denen diese Zeichen nicht vorkommen? Dann könnte das schon ganz anders aussehen.

Außerdem hat Strat ganz recht, ich hab ja auch schon darauf hingewiesen, dass man nur optimieren sollte, wenn es ein nachgewiesener Flaschenhals ist.
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
Crian
 2004-02-20 11:11
#80143 #80143
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Außerdem verwendest Du beim Index nicht $rein, sondern $_ !

Ich lass gerade mal einen komplexeren Test laufen, poste nachher das Ergebnis.\n\n

<!--EDIT|Crian|1077268633-->
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
Crian
 2004-02-20 11:29
#80144 #80144
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
So, hier die Testergebnisse (allerdings nur mit 100_000 Testdurchläufen, wenn ich heute Abend daran denke, alss ich mal übers Wochenende eine größere Menge (Zahlen und Arrayelemente) durchlaufen):

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 (@text) {
   print "timethesis für '$_'\n";

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


Ergebnis:

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
timethesis für '+5000*'
Benchmark: timing 100000 iterations of A, B, C, D, E...
        A:  6 wallclock secs ( 4.27 usr +  1.33 sys =  5.59 CPU) @ 17876.30/s (n=100000)
        B:  6 wallclock secs ( 4.23 usr +  1.30 sys =  5.53 CPU) @ 18083.18/s (n=100000)
        C:  6 wallclock secs ( 4.59 usr +  0.95 sys =  5.55 CPU) @ 18027.76/s (n=100000)
        D:  6 wallclock secs ( 4.30 usr +  1.27 sys =  5.56 CPU) @ 17975.91/s (n=100000)
        E:  6 wallclock secs ( 4.09 usr +  1.44 sys =  5.53 CPU) @ 18079.91/s (n=100000)
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:  4 wallclock secs ( 4.00 usr +  1.42 sys =  5.42 CPU) @ 18443.38/s (n=100000)
        B:  4 wallclock secs ( 4.41 usr +  1.14 sys =  5.55 CPU) @ 18027.76/s (n=100000)
        C:  5 wallclock secs ( 4.33 usr +  1.27 sys =  5.59 CPU) @ 17876.30/s (n=100000)
        D:  6 wallclock secs ( 4.42 usr +  1.17 sys =  5.59 CPU) @ 17876.30/s (n=100000)
        E:  6 wallclock secs ( 4.16 usr +  1.47 sys =  5.62 CPU) @ 17777.78/s (n=100000)
timethesis für '8947573849575563542325375869676545343423232425347585764554534232432452673740-'
Benchmark: timing 100000 iterations of A, B, C, D, E...
        A:  6 wallclock secs ( 4.22 usr +  1.19 sys =  5.41 CPU) @ 18494.54/s (n=100000)
        B:  6 wallclock secs ( 4.25 usr +  1.20 sys =  5.45 CPU) @ 18338.53/s (n=100000)
        C:  6 wallclock secs ( 4.52 usr +  1.08 sys =  5.59 CPU) @ 17876.30/s (n=100000)
        D:  4 wallclock secs ( 4.25 usr +  1.28 sys =  5.53 CPU) @ 18083.18/s (n=100000)
        E:  5 wallclock secs ( 4.31 usr +  1.28 sys =  5.59 CPU) @ 17873.10/s (n=100000)
timethesis für '8947573849575563542325375869676545343423232425347585764554534232432452673740+'
Benchmark: timing 100000 iterations of A, B, C, D, E...
        A:  6 wallclock secs ( 4.22 usr +  1.30 sys =  5.51 CPU) @ 18135.65/s (n=100000)
        B:  6 wallclock secs ( 4.53 usr +  0.89 sys =  5.42 CPU) @ 18439.98/s (n=100000)
        C:  6 wallclock secs ( 4.22 usr +  1.28 sys =  5.50 CPU) @ 18178.51/s (n=100000)
        D:  6 wallclock secs ( 4.44 usr +  1.23 sys =  5.67 CPU) @ 17630.47/s (n=100000)
        E:  5 wallclock secs ( 4.27 usr +  1.30 sys =  5.56 CPU) @ 17975.91/s (n=100000)
timethesis für '8947573849575563542325375869676545343423232425347585764554534232432452673740*'
Benchmark: timing 100000 iterations of A, B, C, D, E...
        A:  6 wallclock secs ( 4.08 usr +  1.44 sys =  5.52 CPU) @ 18132.37/s (n=100000)
        B:  6 wallclock secs ( 4.13 usr +  1.42 sys =  5.55 CPU) @ 18027.76/s (n=100000)
        C:  6 wallclock secs ( 4.28 usr +  1.28 sys =  5.56 CPU) @ 17975.91/s (n=100000)
        D:  6 wallclock secs ( 4.22 usr +  1.38 sys =  5.59 CPU) @ 17879.49/s (n=100000)
        E:  5 wallclock secs ( 4.28 usr +  1.30 sys =  5.58 CPU) @ 17924.36/s (n=100000)
timethesis für '8947573849575563542325375869676545343423232425347585764554534232432452673740/'
Benchmark: timing 100000 iterations of A, B, C, D, E...
        A:  5 wallclock secs ( 4.36 usr +  1.17 sys =  5.53 CPU) @ 18076.64/s (n=100000)
        B:  6 wallclock secs ( 3.98 usr +  1.53 sys =  5.52 CPU) @ 18132.37/s (n=100000)
        C:  6 wallclock secs ( 4.47 usr +  1.16 sys =  5.62 CPU) @ 17780.94/s (n=100000)
        D:  6 wallclock secs ( 4.33 usr +  1.34 sys =  5.67 CPU) @ 17630.47/s (n=100000)
        E:  4 wallclock secs ( 4.45 usr +  1.19 sys =  5.64 CPU) @ 17727.35/s (n=100000)
timethesis für '89475738495755635423253758696765453434232324253475857645545342324324526737401'
Benchmark: timing 100000 iterations of A, B, C, D, E...
        A:  5 wallclock secs ( 4.27 usr +  1.22 sys =  5.48 CPU) @ 18234.87/s (n=100000)
        B:  6 wallclock secs ( 4.47 usr +  1.05 sys =  5.52 CPU) @ 18129.08/s (n=100000)
        C:  6 wallclock secs ( 4.28 usr +  1.30 sys =  5.58 CPU) @ 17927.57/s (n=100000)
        D:  6 wallclock secs ( 4.47 usr +  1.17 sys =  5.64 CPU) @ 17727.35/s (n=100000)
        E:  6 wallclock secs ( 4.38 usr +  1.20 sys =  5.58 CPU) @ 17924.36/s (n=100000)
timethesis für '-9475738495755635423253758696765453434232324253475857645545342324324526737401'
Benchmark: timing 100000 iterations of A, B, C, D, E...
        A:  4 wallclock secs ( 4.36 usr +  1.16 sys =  5.52 CPU) @ 18132.37/s (n=100000)
        B:  5 wallclock secs ( 4.33 usr +  1.20 sys =  5.53 CPU) @ 18079.91/s (n=100000)
        C:  6 wallclock secs ( 4.47 usr +  1.16 sys =  5.62 CPU) @ 17780.94/s (n=100000)
        D:  6 wallclock secs ( 4.33 usr +  1.30 sys =  5.63 CPU) @ 17777.78/s (n=100000)
        E:  6 wallclock secs ( 4.59 usr +  1.05 sys =  5.64 CPU) @ 17727.35/s (n=100000)
timethesis für '+9475738495755635423253758696765453434232324253475857645545342324324526737401'
Benchmark: timing 100000 iterations of A, B, C, D, E...
        A:  4 wallclock secs ( 4.38 usr +  1.08 sys =  5.45 CPU) @ 18338.53/s (n=100000)
        B:  5 wallclock secs ( 4.11 usr +  1.41 sys =  5.52 CPU) @ 18132.37/s (n=100000)
        C:  6 wallclock secs ( 4.25 usr +  1.31 sys =  5.56 CPU) @ 17975.91/s (n=100000)
        D:  6 wallclock secs ( 4.52 usr +  1.19 sys =  5.70 CPU) @ 17534.63/s (n=100000)
        E:  5 wallclock secs ( 4.23 usr +  1.28 sys =  5.52 CPU) @ 18132.37/s (n=100000)
timethesis für '*9475738495755635423253758696765453434232324253475857645545342324324526737401'
Benchmark: timing 100000 iterations of A, B, C, D, E...
        A:  6 wallclock secs ( 4.30 usr +  1.19 sys =  5.48 CPU) @ 18231.54/s (n=100000)
        B:  4 wallclock secs ( 4.49 usr +  1.08 sys =  5.56 CPU) @ 17975.91/s (n=100000)
        C:  5 wallclock secs ( 4.38 usr +  1.20 sys =  5.58 CPU) @ 17927.57/s (n=100000)
        D:  6 wallclock secs ( 4.50 usr +  1.13 sys =  5.62 CPU) @ 17777.78/s (n=100000)
        E:  6 wallclock secs ( 4.47 usr +  1.13 sys =  5.59 CPU) @ 17876.30/s (n=100000)
timethesis für '/9475738495755635423253758696765453434232324253475857645545342324324526737401'
Benchmark: timing 100000 iterations of A, B, C, D, E...
        A:  6 wallclock secs ( 4.08 usr +  1.42 sys =  5.50 CPU) @ 18181.82/s (n=100000)
        B:  6 wallclock secs ( 4.33 usr +  1.23 sys =  5.56 CPU) @ 17979.14/s (n=100000)
        C:  4 wallclock secs ( 4.24 usr +  1.27 sys =  5.50 CPU) @ 18178.51/s (n=100000)
        D:  5 wallclock secs ( 4.17 usr +  1.38 sys =  5.55 CPU) @ 18031.01/s (n=100000)
        E:  6 wallclock secs ( 4.33 usr +  1.22 sys =  5.55 CPU) @ 18031.01/s (n=100000)


Was man eigentlich sieht ist, dass es wirklich furchtbar egal ist, es sei denn diese Operation wäre ein absolutes nachgewiesenes Nadelöhr.

Deshalb sollte man IMHO die Varaiante wählen, die einem vom Lesen / Schreiben / Verstehen am sinnvollsten erscheint.

Für den geübten SAS-Programmier wäre das wohl die Index-Variante, ich würde wahrscheinlich Model A vorziehen. Aber das muss jeder selber wissen.\n\n

<!--EDIT|Crian|1077269569-->
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
eisbeer
 2004-02-20 12:29
#80145 #80145
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
Du hast recht ... ich schäme mich ;)
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
ppm1
 2004-02-20 15:31
#80146 #80146
User since
2003-09-14
142 Artikel
BenutzerIn
[default_avatar]
ok.. Ich sehe, es ist nicht wirklich viel durch eine veränderung davon zu verbessern.... Naja...


Aber jetzt noch die Frage:

Ich sagt immer nur wenn es sich um ein NAchgewiesenes Nadelöhr handelt und dass man das mit dem einen Modul erkennt... Aber wie lese ich die daten davon und sehe was das Nadelöhr ist und was nicht?
ppm1
 2004-02-20 15:50
#80147 #80147
User since
2003-09-14
142 Artikel
BenutzerIn
[default_avatar]
ok.. Ich habe den Link oben gefunden... zu dem Modull


Das ist verstanden.. Ich kan jetzt auch z.B., in der MSDOS konsole, per dprofpp die Hauptrutinen mir ausgeben lassen.... Aber es wird nicht alles angezeigt und ich würde dies gerne mit einem Perlprogramm ausgeben lassen.

genauso würde ich gerne nicht immer eingeben müssen:

perl -d:DProf XXX.pl

sondern dass direkt in dem Skript festlegen können... Geht das?



Nochwas: Wenn das steht 18% Main:Begin bedeutet das was für eine Subrutine ist das denn?
Strat
 2004-02-20 21:12
#80148 #80148
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ja, einfach im shebang, z.b:

#! /usr/bin/perl -d:DProf

selbst wenn der shebang unter windows nicht ausgewertet werden (apache usw. mal ausgenommen), werden die Parameter von Perl schon ausgewertet...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
ptk
 2004-02-20 21:50
#80149 #80149
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=ppm1,20.Feb..2004, 14:50]Nochwas: Wenn das steht 18% Main:Begin bedeutet das was für eine Subrutine ist das denn?[/quote]
Das ist alles, was in BEGIN { } steht oder ueber "use" aufgerufen wird.
Crian
 2004-02-20 22:51
#80150 #80150
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
...oder was im Programmcode außerhalb von Funktionen steht...
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
Gast Gast
 2004-02-25 21:32
#80151 #80151
und wie erkenne ich dann ob das Zeug was da steht, z.B. durch den reguleräen Ausdruck oder durch die Datenbankabfrage oder was auch immer verursacht wurde???


Gibt es nicht irgendwelche Tools um das fest zu machen?
<< |< 1 2 3 4 5 6 >| >> 60 Einträge, 6 Seiten



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