On Fri, Jul 22, 2011 at 8:14 AM, Spencer Graves <[email protected]
> wrote:
> From my personal experience and following this list some for a few
> years, the best practice is initially to ignore the compute time question,
> because the cost of your time getting it to do what you want is far greater,
> at least initially. Don't worry about compute time until it becomes an
> issue. When it does, the standard advice I've seen on this list is to
> experiment with different ways of writing the same thing in R, guided by
> "profiling R code", as described in the "Writing R Extensions" manual.
> (Googling for "profiling R code" identified examples.)
>
>
> Hope this helps.
> Spencer Graves
>
>
>
> On 7/22/2011 6:26 AM, Alireza Mahani wrote:
>
>> I am developing an R package for internal use, and eventually for public
>> release. My understanding is that there is no easy way to avoid copying
>> function arguments in R (i.e. we don't have the concept of pointers in R),
>> which makes me wary of freely creating chains of function calls since each
>> function call implies data copy overhead.
>>
>
AFAIK R does not automatically copy function arguments. R actually tries
very hard to avoid copying while maintaining "pass by value" functionality.
Consider the following functions and their output:
nomod = function(dat)
{
TRUE
}
mod = function(dat, i)
{
dat[5] = 5
TRUE
}
> vec = rep(0, times = 10)
> tracemem(vec)
[1] "<0x8c85978>"
> nomod(vec)
[1] TRUE
> mod(vec)
tracemem[0x8c85978 -> 0x8c85c70]: mod
[1] TRUE
So in the nomod function, the argument never actually gets copied (that is
what tracemem tracks). R only copies data when you modify an object, not
when you simply pass it to a function
HTH,
~G
>
>> Is the above assessment fair? Are there any good write-ups on best
>> practices
>> for writing efficient R libraries that take into consideration the
>> above-mentioned limitations, and any others that might exist?
>>
>> Thank you,
>> Alireza
>>
>>
>> --
>> View this message in context: http://r.789695.n4.nabble.com/**
>> Best-practices-for-writing-R-**functions-tp3686674p3686674.**html<http://r.789695.n4.nabble.com/Best-practices-for-writing-R-functions-tp3686674p3686674.html>
>> Sent from the R devel mailing list archive at Nabble.com.
>>
>> ______________________________**________________
>> [email protected] mailing list
>> https://stat.ethz.ch/mailman/**listinfo/r-devel<https://stat.ethz.ch/mailman/listinfo/r-devel>
>>
>>
> ______________________________**________________
> [email protected] mailing list
> https://stat.ethz.ch/mailman/**listinfo/r-devel<https://stat.ethz.ch/mailman/listinfo/r-devel>
>
--
Gabriel Becker
Graduate Student
Statistics Department
University of California, Davis
[[alternative HTML version deleted]]
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel