From h.wickham at gmail.com  Tue Jun 23 17:06:17 2015
From: h.wickham at gmail.com (Hadley Wickham)
Date: Tue, 23 Jun 2015 10:06:17 -0500
Subject: [Rd] Plans to improve reference classes?
In-Reply-To: <CAOQ5Nyf_6QPNy0nzhrzmgq7Pi14WcksqGB3Oe=21Qv-sPToX+w@mail.gmail.com>
References: <da993e9e95c744a18958291ae25b898d@CRIUS2013.keygene.local>
	<CAOQ5NycbBMTRQrtoXU=UrX0J4HLX-CONTDndSB=gKn7gV9pJ5w@mail.gmail.com>
	<CABdHhvGQX+6U21P4kKh1XesNa9ivB3xXVPkno0vNtJNr3eQajg@mail.gmail.com>
	<CAOQ5Nyf_6QPNy0nzhrzmgq7Pi14WcksqGB3Oe=21Qv-sPToX+w@mail.gmail.com>
Message-ID: <CABdHhvEu9tb-3p7apMdx2orhsKQZiAbxX+DwhC44E5Xa3rD0Vg@mail.gmail.com>

> 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/



[Rd] Plans to improve reference classes?
Hadley Wickham