[R] Coda: On the efficiency of unsplit() for Rolf Turner's recent post
Bert Gunter
bgunter@4567 @end|ng |rom gm@||@com
Mon Oct 7 01:53:20 CEST 2024
(only of interest -- maybe! -- to those who followed this thread of a
couple of weeks ago)
Just for the heckuva it, I compared the timing of Deepayan's unsplit(x,f)
solution to my as.vector(do.call(rbind, x)) approach to the query for a
list of 3 vectors each of length 1000 (the original toy example was for a
list of 3 vectors of length 5). Unsurprisingly, I think, because the
unsplit() approach works for the general case whereas the do.call(rbind)
only works for the balanced structure of the toy example, do.call(rbind)
took about 1/10th the time of unsplit:
> microbenchmark(unsplit(x,f),times = 1000L)
Unit: microseconds
expr min lq mean median uq max neval
unsplit(x, f) 63.058 64.042 70.44419 65.682 67.24 3893.155 1000
--------------
> microbenchmark(as.vector(do.call(rbind,x)),times = 1000L)
Unit: microseconds
expr min lq mean median uq max neval
as.vector(do.call(rbind, x)) 5.617 6.396 7.082299 6.765 7.216 79.335 1000
**Maybe** this suggests that adding a "regular" (or better-named) option to
unsplit() that would allow a simpler faster algorithm to be used for the
special but perhaps not uncommon case of Rolf's structured toy example
might be useful.
Please do not reply to this, as I am too ignorant to judge whether this is
foolish or not. I leave it to those more qualified to either dismiss or act
on this. I just wanted to present some limited but suggestive data.
Cheers to all,
Bert
[[alternative HTML version deleted]]
More information about the R-help
mailing list