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