Re: getc( ) and gets( ) speed
- Posted by "Euman" <euman at bellsouth.net> Dec 15, 2003
- 536 views
Here you go Derek... This is more correct in the way it should read the ascii file... ------------- include file.e with trace atom t, t1, t2, fn, lFileLen integer lWS, lWE, crlf, line_len sequence lFile, line crlf = 10 lWS = 1 lWE = 201 --trace(1) fn = open("trmdemo.txt", "r") -------------------------------------------------------- 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-1] line_len = length(line) lWS = lWE + 1 lWE = lWS + 200 end while t2 = time()- t1 printf(1,"Average Time : %1.6f sec\n", t2 ) -------------------------------------------------------- close(fn) fn = open("trmdemo.txt", "r") -------------------------------------------------------- t1 = time() for i = 1 to 5000 do line = gets(fn) if atom(line) then exit end if line = line[1..200] end for t2 = time()- t1 -------------------------------------------------------- close(fn) printf(1,"Average Time : %1.6f sec\n", t2 ) if getc(0) then end if --------- ----- Original Message ----- From: "Derek Parnell" <ddparnell at bigpond.com> > 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 > -------------------------------------------------------- >