Wie multipliziere ich jedes Arrayelement mit einem Skalar in Perl?

8

Hier ist der Code ...

%Vor%

Brauchen Sie etwas, das mit wenig Code ähnliche Funktionen ausführen kann. Danke!

    
nebulus 15.04.2011, 00:06
quelle

5 Antworten

10

Verwenden Sie foreach.

%Vor%     
RC. 15.04.2011, 00:13
quelle
9

Sie können dies versuchen:

%Vor%

oder einfacher:

%Vor%     
Ted Hopp 15.04.2011 00:15
quelle
7

Wie geht das?

%Vor%

Wie Sie sehen, können Sie das Array an Ort und Stelle ändern, während es durchlaufen wird.

    
jwd 15.04.2011 00:14
quelle
5

Ich kenne den Umfang Ihres Bedarfs nicht. IFF Sie tun numerische Datenbearbeitung, die Perl Data Language ( PDL ) nimmt eine Reihe von numerischen Daten, erstellt daraus ein "Piddle" -Objekt und überlädt mathematische Operationen, um ihre Operation zu "vektorisieren". Dies ist ein sehr effizientes System zur numerischen Verarbeitung. Wie auch immer, hier ist ein Beispiel:

%Vor%     
Joel Berger 16.04.2011 04:14
quelle
4

Dieser Kommentar ist für SoloBold.

Hier ist ein Test des map -Ansatzes:

%Vor%

Hier ist ein Test des foreach -Ansatzes:

%Vor%

Hier ist das System, auf dem ich arbeite:

%Vor%

Hier waren die Ergebnisse eines Tests:

%Vor%

Diese Zeiten sind auf dem gleichen Rechner ziemlich reproduzierbar und die Ergebnisse sind auf einer Dual-Core-Linux-Box etwas wiederholbar:

%Vor%

Das Leistungsverhältnis der OS X-Box ist für map gegenüber foreach 8,53x langsamer. Auf der Linux-Box, 3.67x langsamer für die gleiche.

Meine Linux-Box ist Dual-Core und hat etwas schnellere Kerne als mein Single-Core OS X Laptop.

BEARBEITEN

Ich habe Perl von v5.8.8 auf v5.12.3 in meiner OS X-Box aktualisiert und einen beträchtlichen Geschwindigkeitsschub bekommen, aber map schnitt immer noch schlechter ab als foreach :

%Vor%

Das geht von 8.53x schlechter zu 2.94x ​​schlechter. Eine ziemlich wesentliche Verbesserung.

Die Linux-Box hat mit der Aktualisierung ihrer Perl-Installation auf v5.12.2:

etwas schlechter ausgeführt %Vor%

Das geht von 3,67x schlimmer bis 4,5x schlechter - nicht so gut! Es lohnt sich nicht immer, upzugraden, nur für den Teufel.

    
Alex Reynolds 15.04.2011 05:18
quelle

Tags und Links