[R] Memory management

Charilaos Skiadas skiadas at hanover.edu
Wed Apr 11 15:19:21 CEST 2007


Before you go down that road, I would recommend first seeing if it is  
really a problem. Premature code optimization is in my opinion never  
a good idea.

Also, reading the Details on ?attach you will find this:

	The database is not actually attached. Rather, a new environment is  
created on the search path and the elements of a list (including  
columns of a data frame) or objects in a save file or an environment  
are copied into the new environment. If you use <<- or assign to  
assign to an attached database, you only alter the attached copy, not  
the original object. (Normal assignment will place a modified version  
in the user's workspace: see the examples.) For this reason attach  
can lead to confusion.

So in fact it is the attaching that has to do copying, not the other  
way around.

As for references, perhaps there is a better one, but searching for  
"pass" in "Writing R Extensions" I found the following on page 41:

	Some memory allocation is obvious in interpreted code, for example,
y <- x + 1
allocates memory for a new vector y. Other memory allocation is less  
obvious and occurs because
R is forced to make good on its promise of ‘call-by-value’ argument  
passing. When an argument
is passed to a function it is not immediately copied. Copying occurs  
(if necessary) only when
the argument is modified. This can lead to surprising memory use.

Perhaps a better source, section 4.3.3 of "The R language  
definition", on Argument Evaluation.


On Apr 11, 2007, at 8:25 AM, yoooooo wrote:

>
> I guess I have more reading to do.... Are there any website that I  
> can read
> up on memory management, or specifically what happen when we 'pass in'
> variables, which strategy is better at which situation?
>
> Thanks~
> - yoooooooo
>
>>
>> On Tue, 10 Apr 2007, yoooooo wrote:
>>
>>>
>>> Hi all, I'm just curious how memory management works in R... I  
>>> need to
>>> run an
>>> optimization that keeps calling the same function with a large  
>>> set of
>>> parameters... so then I start to wonder if it's better if I  
>>> attach the
>>> variables first vs passing them in (coz that involves a lot of  
>>> copying..
>>> )
>>

Haris Skiadas
Department of Mathematics and Computer Science
Hanover College



More information about the R-help mailing list