On Sun, 23 Sep 2018, Duncan Murdoch wrote:
On 23/09/2018 3:31 PM, Jeff Newmiller wrote:
[lots of good stuff deleted]
Vectorize is
syntactic sugar with a performance penalty.
[More deletions.]
I would say Vectorize isn't just "syntactic sugar". When I use that term, I
mean something that looks nice but is functionally equivalent.
However, Vectorize() really does something useful: some functions (e.g.
outer()) take other functions as arguments, but they assume the argument is a
vectorized function. If it is not, they fail, or generate garbage results.
Vectorize() is designed to modify the interface to a function so it acts as
if it is vectorized.
The "performance penalty" part of your statement is true. It will generally
save some computing cycles to write a new function using a for loop instead
of using Vectorize(). But that may waste some programmer time.
Duncan Murdoch
(writing as one of the authors of Vectorize())
P.S. I'd give an example of syntactic sugar, but I don't want to bruise some
other author's feelings :-).
Perhaps my writing needs some syntactic sugar: inefficient looping
algorithms can make sense when the calculations performed in each
iteration are long and/or involve large amounts of data. As I mentioned
earlier in this thread I use for loops fairly often, and I use other
inefficient syntactic sugar as well but only to organize large
blocks of already-vectorized (lowercase) calculation units.
In addition to the potential for inefficient use of programmer time,
vectorizing code increases the maximum amount of memory used during
execution of your program. A for loop is one simple way to allow memory
re-use so really large problems can be solved with limited resources, and
some syntactic sugar such as Vectorize can make it easier to keep track of
those for loops.
---------------------------------------------------------------------------
Jeff Newmiller The ..... ..... Go Live...
DCN:<jdnew...@dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go...
Live: OO#.. Dead: OO#.. Playing
Research Engineer (Solar/Batteries O.O#. #.O#. with
/Software/Embedded Controllers) .OO#. .OO#. rocks...1k
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.