Perl vs. Activestate Perl

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Perl vs. Activestate Perl

    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:

    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"
    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

  • #2
    Hi,

    das ist ein ziemlich krasser unterschied. Zugegebenermaßen ist dein script
    nicht gerade auf performance optimiert, aber es sind immerhin gleiche
    vorraussetzungen für beide interpreter versionen. Interessant wäre noch
    zu wissen wie du deine tests gemacht hast.

    Das ist jetzt das erste mal dass ich soetwas bzgl. activestate perl höre. Es
    gibt natürlich noch mehr nachteile die aber eher auf der tatsache beruhen, das
    activestate perl auf windows läuft und da einiges anders gehandled wird.

    greets
    (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

    Kommentar


    • #3
      Nur noch so zur Info:

      Nachdem ich den 816er Build runtergeladen habe kamen nach den Installation Fehler beim öffnen des ppm.
      Aus diesem Grunde hatte ich mich für die Version 5.6.1.638 entschieden. Hier funktioniert das einbinden von Modulen einwandfrei.
      Jedoch ist diese Version die von mir beschriebene sehr langsame Version (Warum auch immer)

      Habe nun anschliessend genau in den selben Ordner, in den ich die 638er Version installiert hatte die 816er Version drüber installiert.
      Daraufhin funzt der ppm der 816er und es die Geschwindigkeit ist auch ok. Versteh ich zwar überhaupt nicht, aber nun funzt es.

      Kommentar

      Lädt...
      X