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