Was aus dem Dolmetscher POV, der Unterschied ist zwischen den folgenden folgenden Programmen:Perl: Warum ist es langsamer, (meine) Variablen innerhalb einer Schleife zu deklarieren?
#!/usr/bin/perl -w
use strict;
for (1..10000000) {
my $jimmy = $_**2;
}
und
#!/usr/bin/perl -w
use strict;
my $jimmy;
for (1..10000000) {
$jimmy = $_**2;
}
"Zeit" Berichte für das erste Programm:
real 0m1.519s
user 0m1.513s
sys 0m0.004s
und für die Sekunde:
real 0m1.023s
user 0m1.012s
sys 0m0.002s
Zusätzlich zu Robert Greiner's Antworten sind die zwei Platzierungen von 'my' in Ihrem Code semantisch unterschiedlich, was in Nicht-Spielzeug-Programmen von Bedeutung sein könnte. – msw
Denken Sie daran, nur weil Sie ein Stück Code optimieren können, bedeutet das nicht, dass Sie sollten. Profilieren Sie die gesamte Anwendung und prüfen Sie, ob der Code, den Sie optimieren möchten, einen großen Teil Ihrer Verarbeitungszeit ausmacht. Versuchen Sie auch, globale und lokale Leistungsziele festzulegen, und nachdem Sie sie getroffen haben, beenden Sie die Optimierung :) –
Wenn Sie eine Auflistung der zusätzlichen Operationen anzeigen möchten, die auftreten, wenn 'my' in der Schleife deklariert ist, können Sie jede davon ausführen die Skripte wie folgt und vergleichen die verschiedenen Ausgaben: 'perl -MO = Concise, -exec script.pl'. – FMc