Re: getc( ) and gets( ) speed
- Posted by "Derek Parnell" <ddparnell at bigpond.com> Dec 15, 2003
- 547 views
----- Original Message ----- From: "Euman" <euman at bellsouth.net> To: <EUforum at topica.com> Subject: getc( ) and gets( ) speed > > > Hello, > > Can the 1st example be made any faster than the second? You do realize that they are not equivilent processes don't you? What is it you are trying to achieve? The first one doesn't actually work 'cos lWS and lWE are not initialized; and even if they were, what is the ... lWS = lWE + 1 lWE = lWS + 1 trying to do? Did you mean this instead... lWS = lWE + 1 lWE = lWS + 199 The second just grabs the first 200 chars of each line in the file. If you are trying to break a file into 200 byte chunks, you could try this ... atom t, t1, t2, fn, lFileLen integer lChunks sequence lFile, line -- Example 1 -------------------------------------------------------- lFileLen = seek(fn, -1) lFileLen = where(fn) if seek(fn, 0) then end if lChunks = floor((lFileLen + 1) / 200) + 1 lFile = repeat(repeat(0,200), lChunks) lFile[lFileLen+1] = crlf t1 = time() for i=1 to lChunks do for j = 1 to 200 do lFile[i][j] = getc(fn) end for end for t2 = time()- t1 -------------------------------------------------------- > atom t, t1, t2, fn, lFileLen > integer lWS, lWE > sequence lFile, line > > -- Example 1 > -------------------------------------------------------- > lFileLen = seek(fn, -1) > lFileLen = where(fn) > if seek(fn, 0) then end if > lFile = repeat(0, lFileLen + 1) > lFile[lFileLen+1] = crlf > > t1 = time() > for i =1 to lFileLen do > lFile[i] = getc(fn) > end for > > while lWE < lFileLen do > line = lFile[lWS..lWE]) > lWS = lWE + 1 > lWE = lWS + 1 > end if > t2 = time()- t1 > -------------------------------------------------------- > > -- Example 2 > > -------------------------------------------------------- > t1 = time() > for i = 1 to val[2] do > line = gets(fn) > if atom(line) then > exit > end if > line = line[1..200] > end for > t2 = time()- t1 > -------------------------------------------------------- > > > > TOPICA - Start your own email discussion group. FREE! > >