(Moved to R-devel) Niek, Would you please provide the details on this test case, including your benchmarks, and what you are trying to achieve at the high-level? Thanks, Michael On Wed, Jun 17, 2015 at 4:55 AM, Niek Bouman <niek.bouman at keygene.com> wrote:> Dear R-core team, > > I was wondering whether you have any plans to improve the current implementation of reference classes. > > Background: > For a new project we will have many mutable objects, and we therefore want to use a construction like reference classes in this project. However, we observed that the speed performance of our implementation (using reference classes) for a simple test case is rather poor compared to a non-OOP implementation. Further, turning the reference classes into R6classes (using the R6 package) gave the best performance. As speed is an issue in our project, this would for us be an important reason to use R6 classes instead of reference classes. The drawback, of course, is that the R6 package is developed by a single developer and that further development is therefore less certain than if we would use reference classes, which are in the core. Ideally we would like a system like R6 in the core of R. Are you planning to support R6, or improve reference classes to be on par with (or better than) R6 in terms of speed, in the core? > > Best regards, > Niek > > Keygene N.V. | P.O. Box 216 | 6700 AE Wageningen | The Netherlands > T (+31) 317 46 68 66 | F (+31) 317 42 49 39 | CoC. 09066631 | http://www.keygene.com<http://www.keygene.com/> > > > [http://www.keygene.com/images/keygenegeneral.jpg]<http://www.keygene.com> > > Stay up-to-date! Subscribe to our bimonthly newsletter here<http://www.keygene.com/newsletter> > > [http://www.keygene.com/images/linkedin-grey.png]<https://www.linkedin.com/company/63753?trk=tyah&trkInfo=tarId%3A1422354182032%2Ctas%3Akeygene%2Cidx%3A3-1-3> [http://www.keygene.com/images/twitter-grey.png] <https://twitter.com/KeyGeneInfo> [http://www.keygene.com/images/facebook-grey.png] <https://www.facebook.com/KeyGeneWageningen> > > The information contained in this message, and attachments if any, may be privileged and/or confidential and is intended to be received only by persons > entitled to receive such information. Use of any part of this message and/or its attachments if any, in any other way than as explicitly stated by the sender is strictly prohibited. Should you receive this > message unintentionally please notify the sender immediately, and delete it together with all attachments, if any. Thank you. The transmission of messages and/or information via the Internet is not > secured and may be intercepted by third parties. KeyGene assumes no liability for any damage caused by any unintentional disclosure and/or use of the content of this message and attachments if any. > > > [[alternative HTML version deleted]] > > _______________________________________________ > R-core list: https://stat.ethz.ch/mailman/listinfo/r-core
On Mon, Jun 22, 2015 at 9:49 AM, Michael Lawrence <lawrence.michael at gene.com> wrote: [...]> Would you please provide the details on this test case, including your > benchmarks, and what you are trying to achieve at the high-level?You can also see http://rpubs.com/wch/17459 Linked from https://github.com/wch/R6/ and also from CRAN, actually: http://cran.rstudio.com/web/packages/R6/README.html> On Wed, Jun 17, 2015 at 4:55 AM, Niek Bouman <niek.bouman at keygene.com> wrote:[...]>> Background: >> For a new project we will have many mutable objects, and we therefore want to use a construction like reference classes in this project. However, we observed that the speed performance of our implementation (using reference classes) for a simple test case is rather poor compared to a non-OOP implementation. Further, turning the reference classes into R6classes (using the R6 package) gave the best performance. As speed is an issue in our project, this would for us be an important reason to use R6 classes instead of reference classes. The drawback, of course, is that the R6 package is developed by a single developer and that further development is therefore less certain than if we would use reference classes, which are in the core. Ideally we would like a system like R6 in the core of R. Are you planning to support R6, or improve reference classes to be on par with (or better than) R6 in terms of speed, in the core?R6 is backed by RStudio, for example their Shiny framework uses R6 classes, so I would not be too worried about this. Gabor [...]
Apart from speed, the most important advantage of R6 over ref classes is that's it easy to subclass a class defined in package A in package B. This is currently difficult with ref classes because of the way it does scoping. (And I think it's difficult to fix without fundamentally changing how ref classes work) Hadley On Mon, Jun 22, 2015 at 8:49 AM, Michael Lawrence <lawrence.michael at gene.com> wrote:> (Moved to R-devel) > > Niek, > > Would you please provide the details on this test case, including your > benchmarks, and what you are trying to achieve at the high-level? > > Thanks, > Michael > > > > > On Wed, Jun 17, 2015 at 4:55 AM, Niek Bouman <niek.bouman at keygene.com> wrote: >> Dear R-core team, >> >> I was wondering whether you have any plans to improve the current implementation of reference classes. >> >> Background: >> For a new project we will have many mutable objects, and we therefore want to use a construction like reference classes in this project. However, we observed that the speed performance of our implementation (using reference classes) for a simple test case is rather poor compared to a non-OOP implementation. Further, turning the reference classes into R6classes (using the R6 package) gave the best performance. As speed is an issue in our project, this would for us be an important reason to use R6 classes instead of reference classes. The drawback, of course, is that the R6 package is developed by a single developer and that further development is therefore less certain than if we would use reference classes, which are in the core. Ideally we would like a system like R6 in the core of R. Are you planning to support R6, or improve reference classes to be on par with (or better than) R6 in terms of speed, in the core? >> >> Best regards, >> Niek >> >> Keygene N.V. | P.O. Box 216 | 6700 AE Wageningen | The Netherlands >> T (+31) 317 46 68 66 | F (+31) 317 42 49 39 | CoC. 09066631 | http://www.keygene.com<http://www.keygene.com/> >> >> >> [http://www.keygene.com/images/keygenegeneral.jpg]<http://www.keygene.com> >> >> Stay up-to-date! Subscribe to our bimonthly newsletter here<http://www.keygene.com/newsletter> >> >> [http://www.keygene.com/images/linkedin-grey.png]<https://www.linkedin.com/company/63753?trk=tyah&trkInfo=tarId%3A1422354182032%2Ctas%3Akeygene%2Cidx%3A3-1-3> [http://www.keygene.com/images/twitter-grey.png] <https://twitter.com/KeyGeneInfo> [http://www.keygene.com/images/facebook-grey.png] <https://www.facebook.com/KeyGeneWageningen> >> >> The information contained in this message, and attachments if any, may be privileged and/or confidential and is intended to be received only by persons >> entitled to receive such information. Use of any part of this message and/or its attachments if any, in any other way than as explicitly stated by the sender is strictly prohibited. Should you receive this >> message unintentionally please notify the sender immediately, and delete it together with all attachments, if any. Thank you. The transmission of messages and/or information via the Internet is not >> secured and may be intercepted by third parties. KeyGene assumes no liability for any damage caused by any unintentional disclosure and/or use of the content of this message and attachments if any. >> >> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> R-core list: https://stat.ethz.ch/mailman/listinfo/r-core > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel-- http://had.co.nz/
Could of requests: 1) Is there any example or writeup on the difficulties of extending reference classes across packages? Just so I can fully understand the issues. 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. Thanks, Michael On Mon, Jun 22, 2015 at 7:06 AM, Hadley Wickham <h.wickham at gmail.com> wrote:> Apart from speed, the most important advantage of R6 over ref classes > is that's it easy to subclass a class defined in package A in package > B. This is currently difficult with ref classes because of the way it > does scoping. (And I think it's difficult to fix without fundamentally > changing how ref classes work) > > Hadley > > On Mon, Jun 22, 2015 at 8:49 AM, Michael Lawrence > <lawrence.michael at gene.com> wrote: >> (Moved to R-devel) >> >> Niek, >> >> Would you please provide the details on this test case, including your >> benchmarks, and what you are trying to achieve at the high-level? >> >> Thanks, >> Michael >> >> >> >> >> On Wed, Jun 17, 2015 at 4:55 AM, Niek Bouman <niek.bouman at keygene.com> wrote: >>> Dear R-core team, >>> >>> I was wondering whether you have any plans to improve the current implementation of reference classes. >>> >>> Background: >>> For a new project we will have many mutable objects, and we therefore want to use a construction like reference classes in this project. However, we observed that the speed performance of our implementation (using reference classes) for a simple test case is rather poor compared to a non-OOP implementation. Further, turning the reference classes into R6classes (using the R6 package) gave the best performance. As speed is an issue in our project, this would for us be an important reason to use R6 classes instead of reference classes. The drawback, of course, is that the R6 package is developed by a single developer and that further development is therefore less certain than if we would use reference classes, which are in the core. Ideally we would like a system like R6 in the core of R. Are you planning to support R6, or improve reference classes to be on par with (or better than) R6 in terms of speed, in the core? >>> >>> Best regards, >>> Niek >>> >>> Keygene N.V. | P.O. Box 216 | 6700 AE Wageningen | The Netherlands >>> T (+31) 317 46 68 66 | F (+31) 317 42 49 39 | CoC. 09066631 | http://www.keygene.com<http://www.keygene.com/> >>> >>> >>> [http://www.keygene.com/images/keygenegeneral.jpg]<http://www.keygene.com> >>> >>> Stay up-to-date! Subscribe to our bimonthly newsletter here<http://www.keygene.com/newsletter> >>> >>> [http://www.keygene.com/images/linkedin-grey.png]<https://www.linkedin.com/company/63753?trk=tyah&trkInfo=tarId%3A1422354182032%2Ctas%3Akeygene%2Cidx%3A3-1-3> [http://www.keygene.com/images/twitter-grey.png] <https://twitter.com/KeyGeneInfo> [http://www.keygene.com/images/facebook-grey.png] <https://www.facebook.com/KeyGeneWageningen> >>> >>> The information contained in this message, and attachments if any, may be privileged and/or confidential and is intended to be received only by persons >>> entitled to receive such information. Use of any part of this message and/or its attachments if any, in any other way than as explicitly stated by the sender is strictly prohibited. Should you receive this >>> message unintentionally please notify the sender immediately, and delete it together with all attachments, if any. Thank you. The transmission of messages and/or information via the Internet is not >>> secured and may be intercepted by third parties. KeyGene assumes no liability for any damage caused by any unintentional disclosure and/or use of the content of this message and attachments if any. >>> >>> >>> [[alternative HTML version deleted]] >>> >>> _______________________________________________ >>> R-core list: https://stat.ethz.ch/mailman/listinfo/r-core >> >> ______________________________________________ >> R-devel at r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel > > > > -- > http://had.co.nz/