[R] parsing speed
Martin Maechler
maechler at stat.math.ethz.ch
Tue May 17 09:50:20 CEST 2005
>>>>> "BertG" == Berton Gunter <gunter.berton at gene.com>
>>>>> on Mon, 16 May 2005 15:20:01 -0700 writes:
BertG> (just my additional $.02) ... and as a general rule
BertG> (subject to numerous exceptions, caveats, etc.)
BertG> 1) it is programming and debugging time that most
BertG> impacts "overall" program execution time; 2) this is
BertG> most strongly impacted by code readability and size
BertG> (the smaller the better); 3) both of which are
BertG> enhanced by modular construction and reuseability,
BertG> which argues for avoiding inline code and using
BertG> separate functions.
BertG> These days, i would argue that most of the time it is
BertG> program clarity and correctness (they are related)
BertG> that is the important issue, not execution speed.
BertG> ... again, subject to exceptions and caveats, etc.
Yes indeed; very good points very well put!
Just to say it again:
**** We strongly recommend not to "inline" your code, but rather
**** program modularly, i.e. call small `utility' functions.
If execution time ever becomes crucial for your problem
(not often), the chances are considerable that the time spent is
not there [[ but you have to measure! - use Rprof() ! ]]
and if it *was* there, then you have your bottleneck in one
simple function that you could start optimizing... even a good
reason for not inlining that code..
Martin Maechler, ETH Zurich
BertG> -- Bert Gunter Genentech Non-Clinical Statistics
BertG> South San Francisco, CA
BertG> "The business of the statistician is to catalyze the
BertG> scientific learning process." - George E. P. Box
>> -----Original Message----- From:
>> r-help-bounces at stat.math.ethz.ch
>> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of
>> Duncan Murdoch Sent: Monday, May 16, 2005 3:09 PM To:
>> f.calboli at imperial.ac.uk Cc: r-help Subject: Re: [R]
>> parsing speed
>>
>> Federico Calboli wrote: > Hi everyone,
>> >
>> > I have a question on parsing speed.
>> >
>> > I have two functions:
>> >
>> > F1 > F2
>> >
>> > As things are now, F2 calls F1 internally:
>> >
>> > F2 = function(x){ > if (something == 1){ > y = F1(x) >
>> } > if (something ==2){ > do whatever > } > }
>> >
>> > *Assuming there could be some difference*, is is faster
>> to use the code > as written above or should I actually
>> write the statements of F1 to make > the parsing faster?
>>
>> The parsing only happens once when you define the
>> functions, and is (almost always) a negligible part of
>> total execution time. I think you're really worried
>> about execution time. You'll probably get more execution
>> time with a separate function because function calls take
>> time.
>>
>> However, my guess is that putting F1 inline won't make
>> enough difference to notice.
>>
>> Duncan
More information about the R-help
mailing list