Mailinglisten-Archive |
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 -- Sebastian
php::bar PHP Wiki - Listenarchive