Re: memory
- Posted by Kat <gertie at PELL.NET> Jul 12, 2001
- 421 views
On 12 Jul 2001, at 19:04, martin.stachon at worldonline.cz wrote: > > Kat writes : > > Hey all,, > > > > I have a short program that opens a 6.8megabyte file, containing text > > separated by lots of {0}. The object is to eliminate the {zero}s, and > reformat > > the results to a more text-looking file. What i can't figure is that > Taskinfo > > says Eu is using 86Megabytes in memory to do it! > > > > Are these the lines doing it? Is a new instance of data created every time > it > > is mentioned in the line?: > > > > puts(1,"removing 10 nulls\n") > > place = match({0,0,0,0,0,0,0,0,0,0},data) > > while place do > > data = data[1..place] & data[place+10..length(data)] > > place = match({0,0,0,0,0,0,0,0,0,0},data) > > end while > > > > > > Kat > > > > Hello Kat, > > Wouldn't be a better way to do the job this code?: > > include file.e > include get.e > integer fn > fn = open("file.txt","rb") > integer char > sequence result > result = {} > while 1 do > char = getc(fn) > if char = -1 then exit -- EOF > eslif char = 0 then -- ignore > else result &= char -- append to the result > end if > end while > close(fn) That way makes 6.8 million file accesses. Eventually, i went to pruning a little off the front of data in a loop, and processing 50 bytes at a time. The program eventually was using 120megs of ram and was thrashing the harddrive for 6 hours, so i killed it off. I'd still like to know why it wanted so much memory for a little 6.8meg text file. Kat