Mailinglisten-Archive |
On Wed, Sep 04, 2002 at 12:06:31PM +0200, Daniel Bladeck wrote: <snip> > ich habe ein kleines Problem, ich habe ein kleines Prog das mir eine > Textdatei in ein Array List und dann die einzelnen Zeilen in eine Datenbank > schreibt. Jetzt wollte mein Freund damit 27000 Zeilen in DB schreiben und > verursachte dadurch einen Speicherüberlauf. das ist klar. kannste dir ja ausrechnen 27000*(zeilenlaenge+x) denke mal 10MB sollte das schon locker einnehmen ... <snip> > Das dauert aber fast 6mal so lange, geht das schneller? rein formal: zeitkomplexitaet: O(n+n*n/2) t=a*n + b*(n*n/2) wobei: a= zeit pro funktionsaufruf, fopen(), fclose(), etc b= zeit pro fgets() u. feof(), etc. kurz: es wird in deinem falle dann * 27000 mal die routine aufgerufen, das file geoeffnen und geschlossen. * 364500000 mal eine zeile gelesen. warum denn nicht so ? if ($fd = fopen($dateiname),"r") { while (!feof($fd)) { packe_zeile_in_db ( fgets($fd,LINEMAX) ); } } dann hast du nur noch lineare komplexitaet. besser gehts eigentlich nicht. <snip> ~-n -- Enrico Weigelt == metux ITS Webhosting ab 5 EUR/Monat. UUCP, rawIP und vieles mehr. phone: +49 36207 519931 www: http://www.metux.de/ fax: +49 36207 519932 email: contact_(at)_metux.de cellphone: +49 174 7066481 smsgate: sms.weigelt_(at)_metux.de --------------------------------------------------------------------- Diese Mail wurde mit UUCP versandt. http://www.metux.de/uucp/
php::bar PHP Wiki - Listenarchive