dear R experts:   I am curious again about R memory allocation strategies.
 Consider an intentionally inefficient program:

ranmatme <- function( lx, rx ) {
    m <- matrix(NA, nrow=lx, ncol=rx)
    for (li in 1:rx) {
        cat("\tLag i=", li, "object size=", object.size(m), "\n")
        m[,li] <- rnorm(lx)
    }
    m
}

v <- ranmatme( 1024*1024*128, 3 )


[1] on the first cat, the object size is only 1.6GB, which is half the size
of the 3.2GB that it is on the 2nd and 3rd call.  why?

[2] I tried to monitor the linux memory allocation in another window.  I
could be completely wrong, but it seems that upon function exit, memory
usage spikes briefly.  it is almost as if there was an explicit copy of m
into v, and both had to exist simultaneously for a moment in time.  is this
the case?  (if so, is there a way to return and assign just the reference?
 I may be blanking here---maybe the answer is obvious.)

regards,

/iaw
----
Ivo Welch (ivo.we...@gmail.com)

        [[alternative HTML version deleted]]

______________________________________________
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