Hallo,
da ich windows al Betriebssystem verwende habe ich mir die ActiveState Perl version heruntergeladen. Da die Version 5.8.8.816 jedes mal nach der Installation Fehler aufwies, habe ich mich für die Version 5.6.1.638 entschieden. Dabei konnte ich nach der gegeben Anleitung problemlos Module installieren und verwenden.
Jedoch weisst die ActiveState Version von Perl einen deutliche Nachteil gegenüber der Perl Version, welche z.B. in dem Paket Xampp verwendet wird, auf.
Das folgende Skript habe ich mit beiden Versionen getestet:
Es macht nichts anderes als eine Datei komplett einlesen die erste Stelle vor einem Komma editieren und anschließend diese änderung wieder abzuspeichern.
Die Grösse der Datei, welche ich zum Einlesen verwende, variiert dabei zwischen 2kb, 3mb oder 25mb.
Die Perlversion von Xampp erledigt die vom Skript vorgenommenen Aenderungen sehr zügig. Im Gegensatz dazu ist die Version von Activstate sehr lahm.
Bezogen auf die 3 Mb grosse Datei:
Activestate benötigt ca 7 Sekunden zur Abarbeitung des Skripts.
Das "normale" Perl hingegen höchstens 1 Sekunde.
Die 25 Mb datei wird vom normalen Perl in ca 20 Sekunden abgearbeitet, während Activestate für diese Datei 5 Minuten 30 sek benötigt
Ich unterscheide immerzwischen den Perlversionen, indem ich die Path Variable von Windows entsprechend anpasse.(Entweder C:\perl\bin; oder c:\apachefriends\xampp\perl\bin\; )
Aufgerufen wird das Skript dann immer aus dem entsprechenden Ordner mit: perl Skriptname.pl
Kann mir bei diesem Problem jemand helfen??
Danke für Tipps
da ich windows al Betriebssystem verwende habe ich mir die ActiveState Perl version heruntergeladen. Da die Version 5.8.8.816 jedes mal nach der Installation Fehler aufwies, habe ich mich für die Version 5.6.1.638 entschieden. Dabei konnte ich nach der gegeben Anleitung problemlos Module installieren und verwenden.
Jedoch weisst die ActiveState Version von Perl einen deutliche Nachteil gegenüber der Perl Version, welche z.B. in dem Paket Xampp verwendet wird, auf.
Das folgende Skript habe ich mit beiden Versionen getestet:
PHP-Code:
$pfad_read ="C:\\Perl-Php-Vergleich\\Datei1\\testdatei.txt";
$pfad_write ="C:\\Perl-Php-Vergleich\\Datei2\\perl_writedatei.txt";
print "pfad\n";
#============================== Reads ==========================================
@Lesedatei = (""); # Array for the Datasets
$i = 0;
open(EINGELESEN, "<$pfad_read") || die "Cant find file to read\n";
while(<EINGELESEN>) # Runs through the File
{
$Lesedatei[$i] = $_; # Saves the File in an Array
$i++;
}
close(EINGELESEN);
print "lesen\n";
#============================== Change==== =====================================
# this Array saves each line of the Lesedatei Array.
@Datenfelder = ("");
$Arraylaenge = @Lesedatei;
for ($i=0;$i<$Arraylaenge;$i++)
{
@Datenfelder = split(/,/,$Lesedatei[$i]); # splits a line of the big array
$Zeile = $i+1;
@Datenfelder[0] = "\"Zeile ".$Zeile."\""; # edit the first element of the "each line Array"
$Lesedatei[$i] = join(',',@Datenfelder); # stores the edit in the big Array
}
print "bearbeiten\n";
#============================== Write ==========================================
# opens file to write changes
open(SCHREIBEN, ">$pfad_write") || die "Cant find file to write\n";;
foreach $Dateizeile (@Lesedatei)
{
print SCHREIBEN "$Dateizeile"; # write in file
}
close(SCHREIBEN);
print "schreiben\n";
Die Grösse der Datei, welche ich zum Einlesen verwende, variiert dabei zwischen 2kb, 3mb oder 25mb.
Die Perlversion von Xampp erledigt die vom Skript vorgenommenen Aenderungen sehr zügig. Im Gegensatz dazu ist die Version von Activstate sehr lahm.
Bezogen auf die 3 Mb grosse Datei:
Activestate benötigt ca 7 Sekunden zur Abarbeitung des Skripts.
Das "normale" Perl hingegen höchstens 1 Sekunde.
Die 25 Mb datei wird vom normalen Perl in ca 20 Sekunden abgearbeitet, während Activestate für diese Datei 5 Minuten 30 sek benötigt
Ich unterscheide immerzwischen den Perlversionen, indem ich die Path Variable von Windows entsprechend anpasse.(Entweder C:\perl\bin; oder c:\apachefriends\xampp\perl\bin\; )
Aufgerufen wird das Skript dann immer aus dem entsprechenden Ordner mit: perl Skriptname.pl
Kann mir bei diesem Problem jemand helfen??
Danke für Tipps
Kommentar