[Rd] Plans to improve reference classes?
Hadley Wickham
h.wickham at gmail.com
Tue Jun 23 17:06:17 CEST 2015
> 1) Is there any example or writeup on the difficulties of extending
> reference classes across packages? Just so I can fully understand the
> issues.
Here's a simple example:
library(scales)
library(methods)
MyRange <- setRefClass("MyRange", contains = "DiscreteRange")
a_range <- MyRange()
a_range$train(1:10)
# Error in a_range$train(1:10) : could not find function "train_discrete"
where train_discrete() is an non-exported function of the scales
package called by the train() method of DiscreteRange.
There are also some notes about portable vs. non-portable R6 classes
at http://cran.r-project.org/web/packages/R6/vignettes/Portable.html
> 2) In what sorts of situations does the performance of reference
> classes cause problems? Sure, it's an order of magnitude slower than
> constructing a simple environment, but those timings are in
> microseconds, so one would need a thousand objects before it started
> to be noticeable. Some motivating use cases would help.
It's a bit of a pathological case, but the switch from RefClasses to
R6 made a noticeable performance improvement in shiny. It's hard to
quantify the impact on an app, but the impact on the underlying
reactive implementation was quite profound: http://rpubs.com/wch/27260
vs http://rpubs.com/wch/27264
R6 also includes a vignette with detailed benchmarking:
http://cran.r-project.org/web/packages/R6/vignettes/Performance.html
I've added Winston to the thread since he's the expert.
Hadley
--
http://had.co.nz/
More information about the R-devel
mailing list