On 04/06/2014 01:35, Ista Zahn wrote:
Hi Frank,

I don't think it is possible to state a general rule about which will
be faster. For example this

system.time({
     for(i in 1:10000) {
         x <- matrix(rnorm(10), ncol = 10)
         y <- mean(x)
         #rm(x)
         z <- matrix(runif(10), ncol = 100)
         #rm(z)
     }
})

gets a lot slower if I uncomment the "rm()" lines, but this

system.time({
     for(i in 1:5) {
         x <- matrix(rnorm(10000000), ncol = 10)
         y <- mean(x)
         rm(x)
         z <- matrix(runif(10000000), ncol = 100)
         rm(z)
     }
})

is slightly faster than it would be without the rm() lines. I think
you'll have to run a smaller version of the simulation both ways and
see which is faster.

Unfortunately, you cannot generalize from smaller examples. One issue is that rm(x) does not actually remove the object: that is done at the next garbage collection and the frequency of GCs varies with the object sizes.

The one place I have encountered benefits is on the benighted 32-bit OS with a 2GB per-process address space. There fragmentation of the address space can be a serious issue with tasks using at least a third of the address space, leading to frequent GCs and slow allocation (as the allocator searches for a large enough contiguous block).

But then we were not told the 'at a minimum' information requested by the posting guide.


Best,
Ista

On Tue, Jun 3, 2014 at 10:05 AM, Frank van Berkum
<frankieboy...@hotmail.com> wrote:
Dear R-users,

I'm working on a project in which many simulations have to be performed within 
functions. The simulations are quite time consuming. I thought that in general 
an empty memory is better for speed performance than a full memory.

If I call a function which performs simulations within the function, than the 
memory will temporarily increase (while the function is executed and objects 
are created within the function), but as soon as the function is finished, 
temporarily objects are flushed. It seems as if it might be beneficial for 
speed performance to clear objects from the memory within the function if they 
are no longer needed in the remainder of the function. Does anyone know whether 
this is actually the case?

Thanks in advance!

Frank

--
Brian D. Ripley,                  rip...@stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to