Mailinglisten-Archive |
Hallo Norbert, Sebastian Mendel schrieb: > Norbert Pfeiffer schrieb: >> Hallo Sebastian, >> >>>> in meinem Fall verwende ich die Keys dazu um in einer Liste keine >>>> Dubletten zuzulassen. Das Array wird anschliessend geflippt und >>>> in eine Datei geschrieben - im Prinzip also einmalig ... >>> wäre da nicht http://php.net/array_unique die passendere Funktion? >> hmm, >> mein Bauch sagt nein - aber schaun mer mal: >> >> Test 1 einlesen von 557.654 Zeilen nach 7.562,162 ms beendet >> das sind 38 MB >> Test 2 einlesen, in Array schreiben und mit array_unique behandeln >> nach 3.804 Zeilen und 13.930,604 ms beendet >> abzueglich des Einlesens 6.368,442 ms >> Test 3 einlesen, als Key in Array schreiben und flippen >> nach 3.804 Zeilen und 9.161,861 ms beendet >> abzueglich des Einlesens 1.599,699 ms >> >> Es ist also, wie erwartet deutlich besser, gleich zu vereinzeln >> als am Ende mit den knapp 40 MB herum zu jonglieren. > > mhm ... ich hab jetzt mal eine 50 MiB SQL Datei genommen, Ermangelung > anderer Daten: > > <?php > $file = 'test.txt'; > > $time = microtime(true); > $data = file($file); > echo "\nEinlesen: " . (microtime(true) - $time); > echo "\nZeilen: " . count($data); > echo "\nSpeicher: " . number_format(memory_get_usage()); > > $time = microtime(true); > $data2 = array_unique($data); > echo "\narray_unique(): " . (microtime(true) - $time); > echo "\nZeilen: " . count($data2); > echo "\nSpeicher: " . number_format(memory_get_usage()); > ?> > > Einlesen: 0.30585479736328 > Zeilen: 135829 > Speicher: 64,451,768 > > array_unique(): 0.44579601287842 > Zeilen: 132766 > Speicher: 71,938,416 oder hatte ich was falsch verstanden? -- Sebastian
php::bar PHP Wiki - Listenarchive