[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MemopMemmmmo

From: John Darrington
Subject: Re: MemopMemmmmo
Date: Sat, 17 Mar 2012 19:06:17 +0000
User-agent: Mutt/1.5.18 (2008-05-17)

On Sat, Mar 17, 2012 at 11:13:56AM -0700, Ben Pfaff wrote:
     The current default of 64 MB is fairly conservative for modern
     systems.  I'd be happy to adjust that downward on (presumably
     older) systems that have little memory.  Perhaps we could use the
     gnulib "physmem" module to find that out.
     But: Are you sure that the problem is that the default setting is
     too high?  I would have guessed that the problem is actually one
     of two things: either the setting is being raised manually to a
     value that is too high for the system, or the categorical code
     does not honor the setting regardless of its value.  (Without
     looking at code, I'd guess that the latter is the case.)

64MB is quite acceptable if it is being called just a few 
times, which would be typical of a normal use of a categorical procedure.
However if a continuous variable is unwittingly specified as a categorical
variable, then potentially the system will attempt to allocate 64MB * N 
where N is the number of distinct  values of that variable.  Clearly if N is
very large, that's not going to work.

Consdier the following syntax:

input program.
 loop #i = 1 to 250000.
   compute A = #i.
   compute B = mod(#i, 2).
   end case.
 end loop.
 end file.
end input program.

compute v = rv.uniform (0,1).

        v BY  B
        /statistics = descriptives

This is a perfectly reasonable (albeit uninteresting) use of examine.    
However, if the user
inadvertently types   "v BY  A" instead of "v BY B", then we will dutifully try 
to allocate,
64MB * 250000 on the heap.    


PGP Public key ID: 1024D/2DE827B3 
fingerprint = 8797 A26D 0854 2EAB 0285  A290 8A67 719C 2DE8 27B3
See or any PGP keyserver for public key.

Attachment: signature.asc
Description: Digital signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]