In article <xolI6.96$7O2.3495 / typhoon.aracnet.com>, Phil Tomson <ptkwt / shell1.aracnet.com> wrote: > >The following bit of code is extracted from a larger chunk of code. It >basically just opens a file, gets each line and checks to see if a regex >is satisfied (or a series of regex's in a boolean equation, but in this >case it's a simple regex). The problem I find is that if the file that is >being checked is fairly large (in this case it's about 190K bytes) the >program eventually just stops under Win98 for no good reason. I haven't >yet tried it on any other platforms, I will try it on Win2000 soon. > >I'm wondering if anybody else can try it under Win98 and let me know what >they get. Of course you'll have to change the file name that's being >opened and it should be a fairly large file. In the latest run that I did >of this, it got to iteration 191 and is just sitting there. Also, the >time between the messages being printed seems to be very non-deterministic >(sometimes up to a minute between reports, other times less than 20 >seconds). I'm running 1.6.2 in case that matters, and I used the -d flag >for debug. > >Here's the code: >#################################################### >i = 0 >while true do > i += 1 > puts i > rptFile = "CYPsw00695.rpt" #a 190K text file > srchStr = "/Error/" > rpt_h = File.open rptFile > puts "after File.open #{rptFile}" if $DEBUG > puts "srchStr is: #{srchStr}" if $DEBUG > while rpt_h.gets do > #puts "while: #$_" if $DEBUG > if eval srchStr > failed = false > found = true > else > failed = true > break > end #if eval > end > rpt_h.close >end >###############end############### OK, I also see the trouble on NT (but it gets further) and Linux (it really slows things down surprisingly, and I can't stop it with ^C, I have to use 'kill') - I'm beginning to think that there must be a better way to do this (I converted this code from Perl). Any ideas about why running this program causes things to get progressively slower? Phil