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