Ton programme ne fonctionne pas avec cette liste :
Je m'aperçois d'ailleurs que ma version non plus
Code : Sélectionner tout - Visualiser dans une fenêtre à part my @tab = ("ki-ou---a-tous","cicou---a-to-s","ki-ou---a-t--s");
Ton programme ne fonctionne pas avec cette liste :
Je m'aperçois d'ailleurs que ma version non plus
Code : Sélectionner tout - Visualiser dans une fenêtre à part my @tab = ("ki-ou---a-tous","cicou---a-to-s","ki-ou---a-t--s");
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
Bon, c'est sûr, si kioka, change les règles, ...
Donc, mon algo fonctionne en prenant "-" comme caractère parasite au lieu de "v" comme au début du post... ouf
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
Oups désolée j'avais plus fait gaffe au v et - ...
Mais c'est bien ton programme que j'ai réutilisé ... j'ai juste ajouté la possibilité de bouclé sur le contenu du tableau pour mettre n chaînes ...
Grr non ça ne marche pas mon histoire ... ça ne fait qu'une comparaison 2 à 2 et si je transforme mon tableau :
.... bà c'est plus bon ... sniff !
Code : Sélectionner tout - Visualiser dans une fenêtre à part my @tab = ("cicou---a-to-s","ki-ou---a-t--s","kikou---a-tous");
Oui, mais ton programme ne contrôle pas que les - sont placés identiquement sur toutes les chaines pour les supprimer, seulement s'ils sont tous placés comme sur la première chaine de la liste.
Edit : ne désespère pas, j'ai une solution qui fonctionne
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
Je crois que cette fois j'ai trouvé :
Je sais pas si c'est le plus optimum mais ça semble bien marché !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 my @tab = ("ki-ou---a-t--s","cicou---a-to-s","kikou---a-tous"); my $ref = shift (@tab); while ($ref =~ /(-+)/g) { my $i = 0; my $lg = length $1; my $pos = pos($ref) - $lg; my $tmp = substr($ref,$pos,$lg); foreach my $el (@tab) { my $tmp_el = substr($el,$pos,$lg); $i++ if ($tmp eq $tmp_el); } if($i == scalar @tab) { substr($ref,$pos,$lg,""); foreach my $el (@tab) { substr($el,$pos,$lg,""); } } } unshift(@tab, $ref);
Ma solution :
Code perl : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 my @chaine = ("ki-ou---a-tous","cicou---a-to-s","ki-ou---a-t--s"); my $parasite = quotemeta "-"; my $parasite_re = qr/${parasite}+/; my @new_chaine = @chaine; foreach my $chaine (@new_chaine) { $chaine =~ s/($parasite_re)/(grep { substr($_, pos($chaine), length($1)) ne $1 } @chaine) ? $1 : ""/ge; } print join "\n", @new_chaine, "\n";
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
Tient je ne connaissais pas quotemeta et je ne savais pas que je pouvais mettre un substr dans un grep !!!
Sympa c'est plus cours que moi !
Vais tester de suite !
Ha non soucis ...il marche pour ce tableau mais si je rajoute :
ce n'est plus bon puisque le résultat obtenus est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part my @chaine = ("ki-ou---a-tous","cicou---a-to-s","ki-ou---a-t--s","ki-o----a-to-s","c-cou---a-to-s","k-kou---a-tous");
au lieu de (obtenus avec mon code) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ki-ouatous cicouato-s ki-ouat--s ki-o----ato-s c-couato-s k-kouatous
C'est bizarre ! ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ki-ouat--s cicouato-s kikouatous ki-o-at--s c-couato-s k-kouatous
(qui a dit que j'aimais me compliquer la vie ?
Je m'absente du forum pour ce soir, je reviens demain )
Ma version est plus courte en ligne de code, mais plus complexe à l'exécution, puisqu'elle est de l'ordre o(n.n.p) en supposant que n est le nombre de chaine, et p le nombre d'occurrence de parasite commun.
Ton algorithme me semble de l'ordre de o(n.p).
Par contre, avec quel programme as-tu vu le problème ?
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
Bien vu, ni mon algo ni le tien ne fonctionnent, puisqu'avec cette liste, c'est ton algo qui ne donne pas le bon résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 @chaines = ("ki-o----a-tous", "cicou---a-to-s", "ki-ou---a-t--s", "ki-o----a-to-s", "c-cou---a-to-s", "k-kou---a-tous");
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
Du coup, l'algorithme que j'ai donné pour 2 chaines ne doit pas fonctionner non plus.
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
La solution est de supprimer le + dans l'expression régulière, pour ne matcher qu'un caractère à la fois.
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
Oulà non car si tu met de long chaîne ça explose en temps ...
Je vais tester l'idée de mettre du code C dans mon code perl ...
Ca n'explosera pas beaucoup plus qu'avant, mais surtout, ce sera fonctionnel...
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
Ho si ! Pour avoir tester je te garantis que ça explose en temps cette méthode si tu prend des grandes chaînes .... tu passe de quelques secondes à plus d'une dizaines de minutes !
Certes, mais entre une méthode qui ne marche pas, et une méthode qui marche, il faut d'abord choisir celle qui marche !
Par ailleurs, si la complexité est en o(n.p) (voire en o(n.n.p) comme dans mon algo), il est normal que les temps d'exécution soient plus longs).
Je suis en train de faire des essais de profilage avec 4 algo, dont le tien (tous avec une recherche sur un caractère à la fois), et 6 chaines de 1400 octets.
Je suis assez surpris des résultats, car sur de courtes chaines, ton algo est le plus rapide, mais sur des chaines plus longues, ce sont les algos avec la plus grande complexité qui sont les plus rapides (sauf le dernier qui doit être de l'ordre de o(n.p)).
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
wouaou ! C'est dans ces moments là que je me sent vraiment débutante ...
Je tente aussi de mon côté de réfléchir à un moyen d'améliorer tout ça ! Je pique un café pour bien me réveillé et je m'y met !
Mmmm... je crois que je me suis trompé dans le calcul des complexités d'algorithmes, car en faisant des essais comparatifs entre ton algorithme et les miens, l'écart se creuse de manière très importante en terme de performance quand j'augmente la taille de la chaine (et le nombre d'occurrence de parasites).
Jedaï, help
Voici le script qui me permet de réaliser le profilage (la fonction b correspondant à l'algo de kioka) :
Ensuite, la commande bash pour le lancer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148 #!/usr/bin/perl use strict; use warnings; use Data::Dumper; use List::MoreUtils qw(pairwise); my $multiplier = $ARGV[0] // 100; my @chaines = ("Bonjourvvv je vais bien", "Bonjourvvv tu vas bien", "Bonjourvvv nous allons bien"); @chaines = ("ki-ou---a-tous----","cicou---a-to-s----","ki-ou---a-t--s----"); @chaines = ("ki-o----a-tous", #ki-o-atous "cicou---a-to-s", #cicouato-s "ki-ou---a-t--s", #ki-ouat--s "ki-o----a-to-s", #ki-o-ato-s "c-cou---a-to-s", #c-couato-s "k-kou---a-tous");#k-kouatous my @results = b(@chaines); map { $_ x= $multiplier } @results; sub check { my (@chaines) = @_; return !pairwise { $a ne $a } @results, @chaines; } map { $_ x= $multiplier } @chaines; sub a { my @chaine = @_; my $parasite = quotemeta "-"; my $parasite_re = qr/${parasite}/; my @new_chaine = @chaine; foreach my $chaine (@new_chaine) { #$chaine =~ s/($parasite_re)/(grep { print STDERR "_=$_, pos=".pos($chaine)." len=".length($1)."\n"; substr($_, pos($chaine), length($1)) ne $1 } @chaine) ? $1 : ""/ge; $chaine =~ s/($parasite_re)/(grep { substr($_, pos($chaine), length($1)) ne $1 } @chaine) ? $1 : ""/ge; } return @new_chaine; } sub aa { my @chaine = @_; my $parasite = quotemeta "-"; my $parasite_re = qr/${parasite}/; my @new_chaine = @chaine; foreach my $chaine (@new_chaine) { $chaine =~ s/($parasite_re)/my $equal = 1; foreach(@chaine) { do { $equal = 0; last } if substr($_, pos($chaine), length($1)) ne $1 } $equal ? "" : $1/ge; } return @new_chaine; } sub aaa { my @chaine = @_; my $parasite = quotemeta "-"; my $parasite_re = qr/${parasite}/; my @parasite; my $ref = shift @chaine; while ($ref =~ /($parasite_re)/g) { my ($pos, $len) = (pos($ref) - length($1), length($1)); unshift @parasite, [ $pos, $len ] if !grep { substr($_, $pos, $len) ne $1 } @chaine; } unshift @chaine, $ref; #print Data::Dumper->Dump([\@parasite], [qw(*parasite)]); foreach my $parasite (@parasite) { foreach my $chaine (@chaine) { substr($chaine, $parasite->[0], $parasite->[1], ""); } } return @chaine; } sub aaaa { my @chaine = @_; my $parasite = quotemeta "-"; my $parasite_re = qr/${parasite}/; my @parasite; my $ref = shift @chaine; while ($ref =~ /($parasite_re)/g) { my ($pos, $len) = (pos($ref) - length($1), length($1)); my $all_equal = 1; foreach (@chaine) { do { $all_equal = 0; last } if substr($_, $pos, $len) ne $1 } unshift @parasite, [ $pos, $len ] if $all_equal; } unshift @chaine, $ref; #print Data::Dumper->Dump([\@parasite], [qw(*parasite)]); foreach my $parasite (@parasite) { foreach my $chaine (@chaine) { substr($chaine, $parasite->[0], $parasite->[1], ""); } } return @chaine; } sub b { my @tab = @_; my $ref = shift (@tab); while ($ref =~ /(-)/g) { my $i = 0; my $lg = length $1; my $pos = pos($ref) - $lg; my $tmp = substr($ref,$pos,$lg); foreach my $el (@tab) { my $tmp_el = substr($el,$pos,$lg); $i++ if ($tmp eq $tmp_el); } if ($i == scalar @tab) { substr($ref,$pos,$lg,""); foreach my $el (@tab) { substr($el,$pos,$lg,""); } } } unshift(@tab, $ref); return @tab; } do { a(@chaines); aa(@chaines); aaa(@chaines); aaaa(@chaines); b(@chaines); } foreach 0 .. (10000 / $multiplier); use Test::More tests => 5; if (length $results[0] < 80) { print "a:\n", join "\n", a(@chaines), "\n"; print "aa:\n", join "\n", aa(@chaines), "\n"; print "aaa:\n", join "\n", aaa(@chaines), "\n"; print "aaaa:\n", join "\n", aaaa(@chaines), "\n"; print "b:\n", join "\n", b(@chaines), "\n"; } ok(check(a(@chaines)), "a algo"); ok(check(aa(@chaines)), "aa algo"); ok(check(aaa(@chaines)), "aaa algo"); ok(check(aaaa(@chaines)), "aaaa algo"); ok(check(b(@chaines)), "b algo");
et pour finir, le résultat :$ rm profilage.txt ; for f in 1 10 100 1000; do perl -d:DProf suppress_common.pl $f ; (printf "\nRESULTATS POUR $f\n";dprofpp -I) >> profilage.txt ; done
Code txt : Sélectionner tout - Visualiser dans une fenêtre à part
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 RESULTATS POUR 1 Total Elapsed Time = 8.702232 Seconds User+System Time = 8.563232 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 40.0 3.420 3.428 10003 0.0003 0.0003 main::aa 32.1 2.779 2.755 10003 0.0003 0.0003 main::a 14.4 1.241 1.241 10004 0.0001 0.0001 main::b 10.1 0.845 0.868 10003 0.0001 0.0001 main::aaaa 8.69 0.737 0.744 10003 0.0001 0.0001 main::aaa 0.72 0.047 0.062 5 0.0094 0.0125 main::BEGIN 0.19 0.016 0.016 40012 0.0000 0.0000 Regexp::DESTROY 0.19 0.016 0.016 2 0.0080 0.0079 Test::Builder::Module::BEGIN 0.19 - 0.016 5 - 0.0032 Test::More::BEGIN 0.18 0.015 0.015 6 0.0025 0.0025 Test::Builder::_print 0.16 - 0.014 5 - 0.0029 Test::Builder::ok 0.16 - 0.014 5 - 0.0029 Test::More::ok 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - warnings::import RESULTATS POUR 10 Total Elapsed Time = 9.478993 Seconds User+System Time = 9.346993 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 36.6 3.428 3.428 1003 0.0034 0.0034 main::b 28.1 2.630 2.628 1002 0.0026 0.0026 main::aa 21.7 2.036 2.034 1002 0.0020 0.0020 main::a 6.77 0.619 0.633 1002 0.0006 0.0006 main::aaaa 6.76 0.634 0.632 1002 0.0006 0.0006 main::aaa 0.83 0.062 0.078 5 0.0124 0.0155 main::BEGIN 0.17 0.016 0.016 2 0.0080 0.0079 Test::Builder::Module::BEGIN 0.17 - 0.016 5 - 0.0032 Test::More::BEGIN 0.11 0.010 0.010 4008 0.0000 0.0000 Regexp::DESTROY 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - List::MoreUtils::bootstrap 0.00 - -0.000 1 - - Test::Builder::Module::_strip_impo 0.0000 rts 0.00 - -0.000 1 - - Exporter::export 0.00 - -0.000 1 - - warnings::unimport RESULTATS POUR 100 Total Elapsed Time = 33.28421 Seconds User+System Time = 33.07021 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 82.7 27.35 27.358 103 0.2656 0.2656 main::b 7.18 2.374 2.374 102 0.0233 0.0233 main::aa 5.77 1.907 1.907 102 0.0187 0.0187 main::a 2.21 0.732 0.732 102 0.0072 0.0072 main::aaa 1.94 0.641 0.641 102 0.0063 0.0063 main::aaaa 0.23 0.062 0.077 5 0.0124 0.0154 main::BEGIN 0.05 0.016 0.016 7 0.0023 0.0023 Test::Builder::BEGIN 0.05 - 0.016 2 - 0.0079 Test::Builder::Module::BEGIN 0.05 - 0.016 5 - 0.0031 Test::More::BEGIN 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - warnings::unimport 0.00 - -0.000 1 - - bytes::import 0.00 - -0.000 1 - - version::(bool 0.00 - -0.000 1 - - version::(cmp RESULTATS POUR 1000 Total Elapsed Time = 323.2286 Seconds User+System Time = 320.9036 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 97.6 313.2 313.21 13 24.093 24.093 main::b 0.91 2.906 2.906 12 0.2422 0.2422 main::aa 0.69 2.219 2.219 12 0.1849 0.1849 main::a 0.41 1.311 1.311 12 0.1092 0.1092 main::aaaa 0.37 1.189 1.189 12 0.0991 0.0991 main::aaa 0.02 0.015 0.078 5 0.0030 0.0155 main::BEGIN 0.00 0.016 0.016 4 0.0040 0.0040 Data::Dumper::BEGIN 0.00 - 0.016 8 - 0.0020 Config::FETCH 0.00 0.016 0.016 2 0.0080 0.0079 Test::Builder::Module::BEGIN 0.00 - 0.016 5 - 0.0032 Test::More::BEGIN 0.00 0.015 0.015 1 0.0150 0.0150 Exporter::as_heavy 0.00 - 0.015 1 - 0.0150 Test::Builder::Module::__ANON__ 0.00 - 0.015 2 - 0.0075 Test::Builder::Module::import 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
J'ai refait des essais plus complets en faisant varier à la fois le nombre de chaine (n) et leur taille (ce qui a une incidence sur le nombre d'occurrence de caractères parasites p), et voici le nouveau code du script, comment l'appeler et le nouveau résultat.
J'ai noté l'ordre de complexité que j'ai estimé dans les résultats des tests.
Autant je comprends à peu près les résultats expérimentaux obtenus pour les algos en a, autant je comprends pas les résultats pour l'algo b, qui sont catastrophiques avec l'augmentation de p.
Jedai, aurais-tu une idée ou une correction à apporter sur les ordres de complexité ?
Code perl : Sélectionner tout - Visualiser dans une fenêtre à part
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154 #!/usr/bin/perl use strict; use warnings; use Data::Dumper; use List::MoreUtils qw(pairwise); my $multiplier = $ARGV[0] // 100; my $nb_chaine = $ARGV[1] // 6; $nb_chaine = 2 if $nb_chaine < 2; my @chaines = ("Bonjourvvv je vais bien", "Bonjourvvv tu vas bien", "Bonjourvvv nous allons bien"); @chaines = ("ki-ou---a-tous----","cicou---a-to-s----","ki-ou---a-t--s----"); @chaines = ("ki-o----a-tous", #ki-o-atous "cicou---a-to-s", #cicouato-s "ki-ou---a-t--s", #ki-ouat--s "ki-o----a-to-s", #ki-o-ato-s "c-cou---a-to-s", #c-couato-s "k-kou---a-tous");#k-kouatous splice @chaines, $nb_chaine; my @results = b(@chaines); map { $_ x= $multiplier } @results; sub check { my (@chaines) = @_; return !pairwise { $a ne $a } @results, @chaines; } map { $_ x= $multiplier } @chaines; sub a { my @chaine = @_; my $parasite = quotemeta "-"; my $parasite_re = qr/${parasite}/; my @new_chaine = @chaine; foreach my $chaine (@new_chaine) { #$chaine =~ s/($parasite_re)/(grep { print STDERR "_=$_, pos=".pos($chaine)." len=".length($1)."\n"; substr($_, pos($chaine), length($1)) ne $1 } @chaine) ? $1 : ""/ge; $chaine =~ s/($parasite_re)/(grep { substr($_, pos($chaine), length($1)) ne $1 } @chaine) ? $1 : ""/ge; } return @new_chaine; } sub aa { my @chaine = @_; my $parasite = quotemeta "-"; my $parasite_re = qr/${parasite}/; my @new_chaine = @chaine; foreach my $chaine (@new_chaine) { $chaine =~ s/($parasite_re)/my $equal = 1; foreach(@chaine) { do { $equal = 0; last } if substr($_, pos($chaine), length($1)) ne $1 } $equal ? "" : $1/ge; } return @new_chaine; } sub aaa { my @chaine = @_; my $parasite = quotemeta "-"; my $parasite_re = qr/${parasite}/; my @parasite; my $ref = shift @chaine; while ($ref =~ /($parasite_re)/g) { my ($pos, $len) = (pos($ref) - length($1), length($1)); unshift @parasite, [ $pos, $len ] if !grep { substr($_, $pos, $len) ne $1 } @chaine; } unshift @chaine, $ref; #print Data::Dumper->Dump([\@parasite], [qw(*parasite)]); foreach my $parasite (@parasite) { foreach my $chaine (@chaine) { substr($chaine, $parasite->[0], $parasite->[1], ""); } } return @chaine; } sub aaaa { my @chaine = @_; my $parasite = quotemeta "-"; my $parasite_re = qr/${parasite}/; my @parasite; my $ref = shift @chaine; while ($ref =~ /($parasite_re)/g) { my ($pos, $len) = (pos($ref) - length($1), length($1)); my $all_equal = 1; foreach (@chaine) { do { $all_equal = 0; last } if substr($_, $pos, $len) ne $1 } unshift @parasite, [ $pos, $len ] if $all_equal; } unshift @chaine, $ref; #print Data::Dumper->Dump([\@parasite], [qw(*parasite)]); foreach my $parasite (@parasite) { foreach my $chaine (@chaine) { substr($chaine, $parasite->[0], $parasite->[1], ""); } } return @chaine; } sub b { my @tab = @_; my $ref = shift (@tab); while ($ref =~ /(-)/g) { my $i = 0; my $lg = length $1; my $pos = pos($ref) - $lg; my $tmp = substr($ref,$pos,$lg); foreach my $el (@tab) { my $tmp_el = substr($el,$pos,$lg); $i++ if ($tmp eq $tmp_el); } if ($i == scalar @tab) { substr($ref,$pos,$lg,""); foreach my $el (@tab) { substr($el,$pos,$lg,""); } } } unshift(@tab, $ref); return @tab; } do { a(@chaines); aa(@chaines); aaa(@chaines); aaaa(@chaines); b(@chaines); } foreach 0 .. (10000 / $multiplier); use Test::More tests => 5; if (length $results[0] < 80) { print "a:\n", join "\n", a(@chaines), "\n"; print "aa:\n", join "\n", aa(@chaines), "\n"; print "aaa:\n", join "\n", aaa(@chaines), "\n"; print "aaaa:\n", join "\n", aaaa(@chaines), "\n"; print "b:\n", join "\n", b(@chaines), "\n"; } printf("n : nombre de chaine, p : nombre d'occurence de parasite\n"); ok(check(a(@chaines)), "a algo d'ordre o(n.n.p)"); ok(check(aa(@chaines)), "aa algo d'ordre o(n.n.p)"); ok(check(aaa(@chaines)), "aaa algo d'ordre o(2.n.p)"); ok(check(aaaa(@chaines)), "aaaa algo d'ordre o(2.n.p)"); ok(check(b(@chaines)), "b algo d'ordre o(2.n.p)");
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part $ rm profilage.txt ; for n in 2 3 4 5 6; do for f in 1 10 100 1000; do perl -d:DProf suppress_common.pl $f $n ; (printf "\nRESULTATS POUR $n chaine de taille $f x 14\n";dprofpp -I) | tee -a profilage.txt ; done ; done
Code text : Sélectionner tout - Visualiser dans une fenêtre à part
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425 RESULTATS POUR 2 chaine de taille 1 x 14 Total Elapsed Time = 2.996757 Seconds User+System Time = 2.773757 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 35.3 0.979 0.979 10004 0.0001 0.0001 main::b 24.8 0.706 0.689 10003 0.0001 0.0001 main::aa 23.6 0.656 0.656 10003 0.0001 0.0001 main::aaaa 21.4 0.626 0.594 10003 0.0001 0.0001 main::aaa 19.0 0.560 0.528 10003 0.0001 0.0001 main::a 2.78 0.062 0.077 5 0.0124 0.0154 main::BEGIN 0.58 0.016 0.016 7 0.0023 0.0023 Test::Builder::BEGIN 0.58 - 0.016 2 - 0.0079 Test::Builder::Module::BEGIN 0.58 - 0.016 5 - 0.0031 Test::More::BEGIN 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - Test::Builder::exported_to 0.00 - -0.000 1 - - warnings::import 0.00 - -0.000 1 - - bytes::import 0.00 - -0.000 1 - - Data::Dumper::bootstrap RESULTATS POUR 2 chaine de taille 10 x 14 Total Elapsed Time = 4.206113 Seconds User+System Time = 4.160113 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 54.9 2.285 2.285 1003 0.0023 0.0023 main::b 14.8 0.619 0.616 1002 0.0006 0.0006 main::aaaa 14.2 0.578 0.591 1002 0.0006 0.0006 main::aa 8.46 0.355 0.352 1002 0.0004 0.0004 main::aaa 8.05 0.323 0.335 1002 0.0003 0.0003 main::a 1.85 0.031 0.077 5 0.0062 0.0154 main::BEGIN 0.75 0.015 0.031 5 0.0030 0.0061 Test::More::BEGIN 0.46 0.019 0.019 4008 0.0000 0.0000 Regexp::DESTROY 0.38 0.016 0.016 2 0.0080 0.0080 DynaLoader::BEGIN 0.38 0.016 0.016 2 0.0080 0.0079 Test::Builder::Module::BEGIN 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - Test::Builder::_my_exit 0.00 - -0.000 1 - - warnings::unimport 0.00 - -0.000 1 - - version::(bool RESULTATS POUR 2 chaine de taille 100 x 14 Total Elapsed Time = 20.89004 Seconds User+System Time = 20.62004 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 91.3 18.84 18.845 103 0.1830 0.1830 main::b 2.82 0.581 0.581 102 0.0057 0.0057 main::aa 2.18 0.450 0.450 102 0.0044 0.0044 main::aaaa 2.10 0.433 0.433 102 0.0042 0.0042 main::aaa 1.23 0.253 0.253 102 0.0025 0.0025 main::a 0.38 0.063 0.078 5 0.0126 0.0155 main::BEGIN 0.07 0.015 0.015 2 0.0075 0.0074 Test::Builder::Module::BEGIN 0.07 - 0.015 5 - 0.0030 Test::More::BEGIN 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - Test::Builder::_my_exit 0.00 - -0.000 1 - - Data::Dumper::bootstrap 0.00 - -0.000 1 - - version::(bool 0.00 - -0.000 1 - - version::(cmp 0.00 - -0.000 1 - - Config::TIEHASH RESULTATS POUR 2 chaine de taille 1000 x 14 Total Elapsed Time = 219.7980 Seconds User+System Time = 218.1380 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 98.9 215.7 215.73 13 16.594 16.594 main::b 0.35 0.767 0.767 12 0.0639 0.0639 main::aaaa 0.29 0.643 0.643 12 0.0536 0.0536 main::aaa 0.27 0.593 0.593 12 0.0494 0.0494 main::aa 0.14 0.311 0.311 12 0.0259 0.0259 main::a 0.04 0.062 0.093 5 0.0124 0.0187 main::BEGIN 0.01 - 0.016 1 - 0.0160 Test::Builder::Module::__ANON__ 0.01 - 0.016 2 - 0.0079 Test::Builder::Module::import 0.01 0.016 0.016 2 0.0080 0.0079 Test::Builder::Module::BEGIN 0.01 - 0.016 5 - 0.0032 Test::More::BEGIN 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - Test::Builder::_my_exit 0.00 - -0.000 1 - - Test::More::import_extra 0.00 - -0.000 1 - - Test::Builder::Module::_strip_impo 0.0000 rts RESULTATS POUR 3 chaine de taille 1 x 14 Total Elapsed Time = 4.424339 Seconds User+System Time = 4.357339 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 35.4 1.521 1.544 10003 0.0002 0.0002 main::aa 22.6 0.996 0.988 10003 0.0001 0.0001 main::a 19.2 0.830 0.838 10003 0.0001 0.0001 main::aaaa 19.2 0.837 0.837 10004 0.0001 0.0001 main::b 14.5 0.623 0.632 10003 0.0001 0.0001 main::aaa 1.77 0.046 0.077 5 0.0092 0.0155 main::BEGIN 0.73 0.032 0.032 40012 0.0000 0.0000 Regexp::DESTROY 0.37 0.016 0.016 2 0.0080 0.0080 DynaLoader::BEGIN 0.37 0.016 0.016 2 0.0080 0.0079 Test::Builder::Module::BEGIN 0.37 - 0.016 5 - 0.0032 Test::More::BEGIN 0.32 0.015 0.014 5 0.0030 0.0029 Test::Builder::ok 0.32 - 0.014 5 - 0.0029 Test::More::ok 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - Test::More::import_extra RESULTATS POUR 3 chaine de taille 10 x 14 Total Elapsed Time = 5.378039 Seconds User+System Time = 5.346039 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 54.0 2.889 2.889 1003 0.0029 0.0029 main::b 17.6 0.946 0.944 1002 0.0009 0.0009 main::aa 11.9 0.641 0.639 1002 0.0006 0.0006 main::a 8.98 0.482 0.480 1002 0.0005 0.0005 main::aaaa 6.92 0.372 0.370 1002 0.0004 0.0004 main::aaa 1.46 0.048 0.078 5 0.0096 0.0155 main::BEGIN 0.28 0.015 0.015 4 0.0037 0.0037 Data::Dumper::BEGIN 0.28 0.015 0.015 2 0.0075 0.0074 Test::Builder::Module::BEGIN 0.28 - 0.015 5 - 0.0030 Test::More::BEGIN 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - Test::Builder::_my_exit 0.00 - -0.000 1 - - List::MoreUtils::bootstrap 0.00 - -0.000 1 - - Test::Builder::Module::_strip_impo 0.0000 rts 0.00 - -0.000 1 - - Exporter::export RESULTATS POUR 3 chaine de taille 100 x 14 Total Elapsed Time = 24.21103 Seconds User+System Time = 24.01203 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 88.8 21.32 21.325 103 0.2070 0.2070 main::b 4.16 0.999 0.999 102 0.0098 0.0098 main::aa 2.69 0.646 0.646 102 0.0063 0.0063 main::aaaa 2.35 0.564 0.564 102 0.0055 0.0055 main::a 1.55 0.372 0.372 102 0.0036 0.0036 main::aaa 0.32 0.016 0.078 5 0.0032 0.0155 main::BEGIN 0.07 0.016 0.016 4 0.0040 0.0040 warnings::register::mkMask 0.07 - 0.016 1 - 0.0160 overload::BEGIN 0.07 - 0.016 2 - 0.0080 warnings::register::import 0.07 - 0.016 8 - 0.0020 Config::FETCH 0.07 0.016 0.016 20 0.0008 0.0008 Test::Builder::_try 0.07 - 0.016 10 - 0.0016 Test::Builder::_unoverload 0.07 - 0.016 10 - 0.0016 Test::Builder::_unoverload_str 0.07 - 0.016 5 - 0.0031 Test::Builder::ok 0.07 - 0.016 5 - 0.0031 Test::More::ok RESULTATS POUR 3 chaine de taille 1000 x 14 Total Elapsed Time = 251.5120 Seconds User+System Time = 248.4510 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 98.5 244.9 244.90 13 18.839 18.839 main::b 0.44 1.094 1.094 12 0.0912 0.0912 main::aa 0.36 0.904 0.904 12 0.0753 0.0753 main::aaaa 0.32 0.797 0.797 12 0.0664 0.0664 main::aaa 0.26 0.656 0.656 12 0.0547 0.0547 main::a 0.03 0.047 0.077 5 0.0094 0.0155 main::BEGIN 0.01 0.016 0.016 1 0.0160 0.0160 Exporter::as_heavy 0.01 - 0.016 1 - 0.0160 Test::Builder::Module::__ANON__ 0.01 - 0.016 2 - 0.0079 Test::Builder::Module::import 0.01 0.015 0.015 2 0.0075 0.0074 Test::Builder::Module::BEGIN 0.01 - 0.015 5 - 0.0030 Test::More::BEGIN 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - Test::Builder::_my_exit 0.00 - -0.000 1 - - Test::More::import_extra RESULTATS POUR 4 chaine de taille 1 x 14 Total Elapsed Time = 5.829730 Seconds User+System Time = 5.805730 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 40.0 2.323 2.324 10003 0.0002 0.0002 main::aa 25.6 1.503 1.488 10003 0.0002 0.0001 main::a 17.2 1.000 1.000 10004 0.0001 0.0001 main::b 13.4 0.795 0.780 10003 0.0001 0.0001 main::aaa 10.8 0.631 0.631 10003 0.0001 0.0001 main::aaaa 1.33 0.062 0.077 5 0.0124 0.0154 main::BEGIN 0.28 0.016 0.016 2 0.0080 0.0079 Test::Builder::Module::BEGIN 0.28 - 0.016 5 - 0.0031 Test::More::BEGIN 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - Test::Builder::_my_exit 0.00 - -0.000 1 - - warnings::unimport 0.00 - -0.000 1 - - version::(bool 0.00 - -0.000 1 - - version::(cmp 0.00 - -0.000 1 - - Config::AUTOLOAD RESULTATS POUR 4 chaine de taille 10 x 14 Total Elapsed Time = 6.713003 Seconds User+System Time = 6.598003 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 45.1 2.978 2.978 1003 0.0030 0.0030 main::b 24.0 1.588 1.586 1002 0.0016 0.0016 main::aa 15.0 0.996 0.994 1002 0.0010 0.0010 main::a 10.3 0.684 0.682 1002 0.0007 0.0007 main::aaaa 5.62 0.373 0.371 1002 0.0004 0.0004 main::aaa 1.17 0.046 0.077 5 0.0092 0.0155 main::BEGIN 0.24 0.016 0.016 2 0.0080 0.0080 DynaLoader::BEGIN 0.24 0.016 0.016 5 0.0032 0.0032 Test::More::BEGIN 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - Test::Builder::_my_exit 0.00 - -0.000 1 - - Test::More::import_extra 0.00 - -0.000 1 - - Test::Builder::Module::_strip_impo 0.0000 rts 0.00 - -0.000 1 - - bytes::import 0.00 - -0.000 1 - - Data::Dumper::bootstrap RESULTATS POUR 4 chaine de taille 100 x 14 Total Elapsed Time = 27.07727 Seconds User+System Time = 26.90127 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 86.5 23.28 23.282 103 0.2260 0.2260 main::b 5.28 1.422 1.421 102 0.0139 0.0139 main::aa 3.77 1.016 1.015 102 0.0100 0.0100 main::a 2.43 0.655 0.654 102 0.0064 0.0064 main::aaaa 1.74 0.469 0.468 102 0.0046 0.0046 main::aaa 0.29 0.047 0.077 5 0.0094 0.0155 main::BEGIN 0.06 0.016 0.016 1 0.0160 0.0160 Exporter::as_heavy 0.06 - 0.016 1 - 0.0160 Test::Builder::Module::__ANON__ 0.06 - 0.016 2 - 0.0079 Test::Builder::Module::import 0.06 0.015 0.015 2 0.0075 0.0074 Test::Builder::Module::BEGIN 0.06 - 0.015 5 - 0.0030 Test::More::BEGIN 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - Test::More::import_extra 0.00 - -0.000 1 - - Test::Builder::Module::_strip_impo 0.0000 rts RESULTATS POUR 4 chaine de taille 1000 x 14 Total Elapsed Time = -186764. Seconds User+System Time = 0 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - - 1 - - bytes::import 0.00 - - 1 - - Data::Dumper::bootstrap 0.00 - - 1 - - version::(bool 0.00 - - 1 - - version::(cmp 0.00 - - 1 - - Config::TIEHASH 0.00 - - 1 - - Config::AUTOLOAD 0.00 - - 2 - - Config::fetch_string 0.00 - - 1 - - DynaLoader::dl_load_flags 0.00 - - 1 - - warnings::import 0.00 - - 1 - - List::MoreUtils::bootstrap 0.00 - - 1 - - Test::Builder::_open_testhandles 0.00 - - 1 - - Test::Builder::exported_to 0.00 - - 1 - - Test::More::import_extra RESULTATS POUR 5 chaine de taille 1 x 14 Total Elapsed Time = 8.221216 Seconds User+System Time = 8.161216 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 32.2 2.579 2.633 10003 0.0003 0.0003 main::aa 31.2 2.563 2.554 10003 0.0003 0.0003 main::a 15.2 1.247 1.247 10004 0.0001 0.0001 main::b 13.9 1.114 1.137 10003 0.0001 0.0001 main::aaaa 11.9 0.968 0.975 10003 0.0001 0.0001 main::aaa 1.34 0.047 0.109 5 0.0094 0.0219 main::BEGIN 0.92 0.075 0.075 40012 0.0000 0.0000 Regexp::DESTROY 0.38 0.015 0.031 5 0.0030 0.0062 Test::More::BEGIN 0.20 0.016 0.016 1 0.0160 0.0160 Exporter::as_heavy 0.20 0.016 0.016 8 0.0020 0.0020 Config::FETCH 0.20 - 0.016 1 - 0.0159 Test::Builder::Module::__ANON__ 0.20 - 0.016 2 - 0.0079 Test::Builder::Module::import 0.20 0.016 0.016 2 0.0080 0.0079 Test::Builder::Module::BEGIN 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export RESULTATS POUR 5 chaine de taille 10 x 14 Total Elapsed Time = 8.710980 Seconds User+System Time = 8.688980 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 37.5 3.263 3.263 1003 0.0033 0.0033 main::b 25.6 2.229 2.227 1002 0.0022 0.0022 main::aa 20.7 1.792 1.805 1002 0.0018 0.0018 main::a 8.21 0.715 0.713 1002 0.0007 0.0007 main::aaaa 7.11 0.620 0.618 1002 0.0006 0.0006 main::aaa 1.08 0.047 0.094 5 0.0094 0.0189 main::BEGIN 0.37 0.016 0.032 5 0.0032 0.0064 Test::More::BEGIN 0.18 0.016 0.016 1 0.0160 0.0160 Exporter::as_heavy 0.18 - 0.016 1 - 0.0160 Test::Builder::Module::__ANON__ 0.18 - 0.016 2 - 0.0079 Test::Builder::Module::import 0.18 0.016 0.016 2 0.0080 0.0079 Test::Builder::Module::BEGIN 0.17 0.015 0.015 20 0.0007 0.0007 Test::Builder::_try 0.17 - 0.015 10 - 0.0015 Test::Builder::_unoverload 0.17 - 0.015 10 - 0.0015 Test::Builder::_unoverload_str 0.16 - 0.014 5 - 0.0029 Test::Builder::ok RESULTATS POUR 5 chaine de taille 100 x 14 Total Elapsed Time = 31.28524 Seconds User+System Time = 31.04024 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 84.2 26.14 26.141 103 0.2538 0.2538 main::b 6.84 2.124 2.123 102 0.0208 0.0208 main::aa 4.93 1.515 1.529 102 0.0148 0.0150 main::a 1.96 0.610 0.609 102 0.0060 0.0060 main::aaaa 1.86 0.579 0.578 102 0.0057 0.0057 main::aaa 0.30 0.063 0.093 5 0.0126 0.0187 main::BEGIN 0.05 0.016 0.016 2 0.0080 0.0079 Test::Builder::Module::BEGIN 0.05 - 0.016 5 - 0.0032 Test::More::BEGIN 0.05 0.015 0.015 3 0.0050 0.0050 Exporter::import 0.05 - 0.015 4 - 0.0037 Data::Dumper::BEGIN 0.05 0.014 0.014 408 0.0000 0.0000 Regexp::DESTROY 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - Test::More::import_extra 0.00 - -0.000 1 - - Test::Builder::Module::_strip_impo 0.0000 rts RESULTATS POUR 5 chaine de taille 1000 x 14 Total Elapsed Time = 314.0599 Seconds User+System Time = 309.7169 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 97.8 303.1 303.11 13 23.316 23.316 main::b 0.78 2.423 2.423 12 0.2019 0.2019 main::aa 0.56 1.736 1.736 12 0.1447 0.1447 main::a 0.40 1.233 1.233 12 0.1027 0.1027 main::aaaa 0.36 1.108 1.108 12 0.0923 0.0923 main::aaa 0.03 0.016 0.078 5 0.0032 0.0157 main::BEGIN 0.01 0.032 0.032 4 0.0080 0.0080 Data::Dumper::BEGIN 0.01 0.016 0.016 2 0.0080 0.0080 DynaLoader::BEGIN 0.00 0.015 0.015 2 0.0075 0.0074 Test::Builder::Module::BEGIN 0.00 - 0.015 5 - 0.0030 Test::More::BEGIN 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - Test::Builder::_my_exit 0.00 - -0.000 1 - - Test::More::import_extra 0.00 - -0.000 1 - - Test::Builder::Module::_strip_impo 0.0000 rts RESULTATS POUR 6 chaine de taille 1 x 14 Total Elapsed Time = 9.790230 Seconds User+System Time = 9.680230 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 36.2 3.487 3.510 10003 0.0003 0.0004 main::aa 33.2 3.208 3.216 10003 0.0003 0.0003 main::a 15.8 1.538 1.538 10004 0.0002 0.0002 main::b 11.7 1.112 1.135 10003 0.0001 0.0001 main::aaaa 7.88 0.756 0.763 10003 0.0001 0.0001 main::aaa 0.95 0.062 0.092 5 0.0124 0.0185 main::BEGIN 0.65 0.063 0.063 40012 0.0000 0.0000 Regexp::DESTROY 0.32 0.016 0.031 5 0.0032 0.0062 Test::More::BEGIN 0.15 0.015 0.015 2 0.0075 0.0074 Test::Builder::Module::BEGIN 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - Test::Builder::_my_exit 0.00 - -0.000 1 - - warnings::import 0.00 - -0.000 1 - - bytes::import 0.00 - -0.000 1 - - Data::Dumper::bootstrap RESULTATS POUR 6 chaine de taille 10 x 14 Total Elapsed Time = 9.958015 Seconds User+System Time = 9.816015 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 37.8 3.713 3.713 1003 0.0037 0.0037 main::b 25.6 2.524 2.520 1002 0.0025 0.0025 main::aa 21.8 2.149 2.145 1002 0.0021 0.0021 main::a 8.03 0.792 0.788 1002 0.0008 0.0008 main::aaaa 6.67 0.659 0.655 1002 0.0007 0.0007 main::aaa 0.95 0.047 0.093 5 0.0094 0.0186 main::BEGIN 0.16 0.016 0.016 1 0.0160 0.0159 Exporter::as_heavy 0.16 - 0.016 1 - 0.0159 Test::Builder::Module::__ANON__ 0.16 - 0.016 2 - 0.0079 Test::Builder::Module::import 0.16 0.016 0.016 2 0.0080 0.0079 Test::Builder::Module::BEGIN 0.16 - 0.016 5 - 0.0031 Test::More::BEGIN 0.15 - 0.015 8 - 0.0019 Config::FETCH 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - Test::Builder::_my_exit RESULTATS POUR 6 chaine de taille 100 x 14 Total Elapsed Time = 35.57522 Seconds User+System Time = 34.93222 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 82.1 28.69 28.690 103 0.2785 0.2785 main::b 7.38 2.580 2.579 102 0.0253 0.0253 main::aa 6.15 2.150 2.149 102 0.0211 0.0211 main::a 2.14 0.749 0.748 102 0.0073 0.0073 main::aaa 1.88 0.659 0.658 102 0.0065 0.0065 main::aaaa 0.27 0.032 0.094 5 0.0064 0.0189 main::BEGIN 0.09 0.015 0.031 5 0.0030 0.0062 Test::More::BEGIN 0.05 0.016 0.016 4 0.0040 0.0040 Data::Dumper::BEGIN 0.05 0.016 0.016 1 0.0160 0.0160 Exporter::as_heavy 0.05 - 0.016 1 - 0.0160 Test::Builder::Module::__ANON__ 0.05 - 0.016 2 - 0.0079 Test::Builder::Module::import 0.05 0.016 0.016 2 0.0080 0.0079 Test::Builder::Module::BEGIN 0.00 0.000 0.000 1 0.0000 0.0000 Config::launcher 0.00 0.000 0.000 1 0.0000 0.0000 Exporter::Heavy::heavy_export 0.00 - -0.000 1 - - Test::More::import_extra RESULTATS POUR 6 chaine de taille 1000 x 14 Total Elapsed Time = 337.6092 Seconds User+System Time = 332.5772 Seconds Inclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 97.5 324.5 324.54 13 24.965 24.965 main::b 0.89 2.954 2.954 12 0.2462 0.2462 main::aa 0.68 2.265 2.265 12 0.1887 0.1887 main::a 0.41 1.375 1.375 12 0.1146 0.1146 main::aaaa 0.38 1.280 1.280 12 0.1067 0.1067 main::aaa 0.03 0.047 0.094 5 0.0094 0.0188 main::BEGIN 0.00 0.016 0.016 6 0.0027 0.0027 Test::Builder::_print 0.00 - 0.016 8 - 0.0020 Config::FETCH 0.00 0.016 0.016 3 0.0053 0.0053 List::MoreUtils::BEGIN 0.00 0.016 0.016 5 0.0032 0.0032 List::MoreUtils::pairwise 0.00 - 0.016 5 - 0.0032 main::check 0.00 - 0.016 5 - 0.0032 Test::Builder::ok 0.00 - 0.016 5 - 0.0032 Test::More::ok 0.00 0.015 0.015 2 0.0075 0.0075 Test::Builder::Module::BEGIN 0.00 - 0.015 5 - 0.0030 Test::More::BEGIN
Plus j'apprends, et plus je mesure mon ignorance (philou67430)
Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
Si c'est utile, say
Cette semaine je suis blindée de réunions donc je n'ai pas le temps de me replonger dans mon code mais dès la semaine prochaine je m'y remet et dirais si j'ai vu quelque chose ou trouvé quelque chose. Viendrais voir si de nouvelles idées sont apparut ici
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager