Php script in perl übersetzen

Ergebniss
muss ich wohl echt mal mit c / c++ anfangen…

File:

-rw-r--r-- 1 www-data www-data 393M 2007-09-28 11:33 test.exp

Laufzeiten:

pg@ubuntu:/var/www/test$ time php import\_test.php

real 0m33.514s
user 0m33.150s
sys 0m0.370s
pg@ubuntu:/var/www/test$ time perl import.pl

real 0m50.886s
user 0m50.670s
sys 0m0.200s
pg@ubuntu:/var/www/test$ time ./cconverter

real 0m0.907s
user 0m0.640s
sys 0m0.270s

Outputfiles:

pg@ubuntu:/var/www/test/csv$ ls -l
-rw-r--r-- 1 pg pg 1918953 2007-09-28 14:19 cpp\_out\_ko.csv
-rw-r--r-- 1 pg pg 1353282 2007-09-28 14:19 cpp\_out\_t.csv
-rw-r--r-- 1 pg pg 1918953 2007-09-28 14:19 perl\_out\_ko.csv
-rw-r--r-- 1 pg pg 1353261 2007-09-28 14:19 perl\_out\_t.csv
-rw-r--r-- 1 pg pg 1918953 2007-09-28 14:17 php\_out\_ko.csv
-rw-r--r-- 1 pg pg 1353282 2007-09-28 14:17 php\_out\_t.csv

hätte nicht gedacht das dort ein so masiver unterschied besteht,

was mich extremst wundert sind die unterschiedlichen zeiten bei perl und php.
habe eigentlich nicht damit gerechnet das dort ein so großer unterschied ist.

Gruß
Phillip

muss ich wohl echt mal mit c / c++ anfangen…

File:

-rw-r–r-- 1 www-data www-data 393M 2007-09-28 11:33 test.exp

pg@ubuntu:/var/www/test$ time ./cconverter
real 0m0.907s
user 0m0.640s
sys 0m0.270s

ich weiss nicht was du da gemessen hast, aber mit was fuer einer maschine kann man 400mb in

muss ich wohl echt mal mit c / c++ anfangen…

Und wie groß war die Ursprungsdatei?

Könntest du mal eine lauffähige Version deines PHP Skriptes bereitstellen, also wo man nur Copy & paste in datei macht und die dann auch mit „php /path/to/file“ ausführbar ist?

Könntest du auch den C Sourcecode posten?

muss ich wohl echt mal mit c / c++ anfangen…

hätte nicht gedacht das dort ein so masiver unterschied
besteht,

was mir noch aufgefallen ist:
die aufrufe von intodb() und die entspr. funkionalität waren soweit ich gesehen habe weder in der c noch in der perl umsetzung enthalten - hast du die aus dem php auch entfernt?

SATA2 im 1+0 Raid

gruß
Phillip

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

PHP Script

<?PHP $handle = fopen("/var/www/test/test.exp","r");<br />$out\_ko = fopen("/var/www/test/csv/php\_out\_ko.csv","w+");
$out\_t = fopen("/var/www/test/csv/php\_out\_t.csv","w+");

while (!feof($handle)) {
 $buffer = trim(fgets($handle));
 $var = explode(";",$buffer);
 if($var[0] == 'KO') {
 unset($var[0],$var[1]);
 fwrite($out\_ko, "NULL;".implode(";",$var) . "\n");
 } else if ($var[0] == 'T') {
 $id = $var[2];
 unset($var[0],$var[1],$var[2]);
 $x = 3;
 $y = 1;
 WHILE(!empty($var[$x])) {
 fwrite($out\_t, "NULL;$id;".$y++.";".$var[$x++].";".$var[$x++].";".$var[$x++].";".$var[$x++].";".$var[$x++]."\n");
 }
 } 
}
fclose($handle);
fclose($out\_ko);
fclose($out\_t);
?\>

Könntest du auch den C Sourcecode posten?

http://www.wer-weiss-was.de/cgi-bin/forum/showarticl…

ich weiss nicht was du da gemessen hast, aber mit was fuer
einer maschine kann man 400mb in

Laut Samsung sollen die Festplatten bei der Datenübertragung eine
maximale Geschwindigkeit von 3 Gbit/s erreichen. Damit sind sie etwa
doppelt so schnell wie normale SATA1 Festplatten. In Deutschland sind
die neuen, oft auch als SATA/300 bezeichneten Platten z.T. auch schon
erhältlich.

SATA2 im 1+0 Raid

Sprich SATA2/300

gruß
Phillip

Hallo,

muss ich wohl echt mal mit c / c++ anfangen…

Solltest Du sowieso, generell, überhaupt - und
vor allem in dieser Branche :wink:

pg@ubuntu:/var/www/test$ time php import_test.php
user 0m33.150s

pg@ubuntu:/var/www/test$ time perl import.pl
user 0m50.670s

pg@ubuntu:/var/www/test$ time ./cconverter
real 0m0.907s
user 0m0.640s
sys 0m0.270s

hätte nicht gedacht das dort ein so masiver unterschied
besteht,

Na ja, bis Faktor 100, wenn wirklich
was im Quelltext passiert, ist nicht
ungewöhnlich. Die Perl-Version krankt
hier am Einsatz von „Eleganz“, sprich
Arrayslices etc. sehen schön aus, kosten
aber Zeit.

was mich extremst wundert sind die unterschiedlichen zeiten
bei perl und php.
habe eigentlich nicht damit gerechnet das dort ein so großer
unterschied ist.

Idr. ist bei „nahezu identischem“ Quelltext
Perl c.a. 25-50% schneller als PHP, das ist
meine Erfahrung. Man müsste Perl, um es schneller
zu bekommen, „uneleganter“ machen.

Ich bin übers Wochenende weg, sonst würde ich mal
versuchen, die Perl-Version in Richtung C zu
trimmen :wink:

Vielleicht habe die Anderen ja Lust dazu …

Grüße
CMБ

Ich bin übers Wochenende weg, sonst würde ich mal
versuchen, die Perl-Version in Richtung C zu
trimmen :wink:

Vielleicht habe die Anderen ja Lust dazu …

ich kriege ja noch nicht mal die PHP-version zum laufen, da
tauchen jede menge warnings auf (php 5.2.1)
da macht ein vergleich keinen spass.

warnungen sind erst mal net soo schlimm :wink:
mach nen error_reporting(0); :wink:

aber bei mir tauchen auch mit error_reporting(E_ALL); keine Warnungen auf.

Gruß
Phillip

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

warnungen sind erst mal net soo schlimm :wink:
mach nen error_reporting(0); :wink:

omg.

warnungen haben einen grund.
ausserdem verlangsamen sie ein programm erheblich, wenn sie
in jedem schleifendurchlauf kommen. aber gut, wenn dir
das egal ist…

darum ja auch

aber bei mir tauchen auch mit error_reporting(E_ALL); keine Warnungen auf.

Welche Warnung taucht den bei dir auf ?

Gruß
Phillip

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]