Thread Schleifendurchläufe berechnen
(12 answers)
Opened by qwe123qwe at 2014-02-04 13:54
Hallo qwe123qwe
2014-02-04T18:43:49 qwe123qwe Verschachtelt ist die Schleife in meinem Entwurf doch auch. Sie dürfte Deiner Schleife ähneln, wenn ich Dein Ursprungsposting richtig verstanden habe. 150.000 Durchläufe nur zum Mitzählen dauern auf meinem Rechner < 2 Hundertstel Sekunden. Mein Vorschlag wäre dann dahingehend erweiterbar, dass Du einfach zwei Mal durch die Schleife iterierst, einmal als dry run und dann, wenn eine bestimmte Zahl von Durchläufen nicht überschritten wird, produktiv, z.B. so: 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 47 48 49 50 51 52 #!/usr/bin/perl use strict; use warnings; use Time::HiRes qw( gettimeofday tv_interval ); my $t0 = [ gettimeofday ]; my ($von, $bis, $schritt, $count) = (10, 30, 4, 25000); my $schleifendurchlaeufe = schleife($von, $bis, $schritt, $count, 'dryrun!'); print "Anzahl Schleifendurchlaufe: $schleifendurchlaeufe\n"; if ($schleifendurchlaeufe <= 5000) { my $ergebnis = schleife($von, $bis, $schritt, $count); print "Ergebnis: $ergebnis\n"; } else { print "Warnung: Kein Ergebnis ermittelt (zu viele Durchläufe).\n"; } print "Time elapsed: " . (tv_interval( $t0 )) . " seconds\n"; sub schleife { my ($von, $bis, $schritt, $count, $dryrun) = @_; my $durchlauefe; for (1..$count) { for (my $i = $von; $i <= $bis; $i+=$schritt) { if ($dryrun) { $durchlauefe++; } else { # Hier die Befehle, die in der Schleife ausgeführt werden sollen } } } if ($dryrun) { return $durchlauefe; } else { return "Befehle in der Schleife ausgeführt!"; } } Output: Code: (dl
)
1 Anzahl Schleifendurchlaufe: 150000 bzw. wenn ich $count auf 250 setze: Code: (dl
)
1 Anzahl Schleifendurchlaufe: 1500 Grüße payx |