Lazy loading just converts an object into a small instruction to load the object. If the object was already small, there's no advantage to that. It's mainly designed to avoid memory use (some rarely used objects can be gigantic).

From a design point of view the reason is that this isn't the problem lazy loading is trying to solve. We didn't have a problem with packages that have huge number of small objects, but we did have a problem with packages that had a moderate number of moderately large objects.


In addition, trying to optimize performance is not usually a good idea unless you can measure the performance of different implementations on real applications, and we didn't have applications like that.

Assume 100 C++ classes each class having 100 member functions. After wrapping these classes into R, if the wrapping design is class-oriented we should have like 100 objects. At the same time, if the wrapping design is function-oriented we have like 10`000 objects which are too lazy for lazy loading.


I have tried wrapping exactly the same classes by R.oo based on S3 and the outcome package was much faster in both installation and loading. The package went slow once I tried it with S4. I guess R.oo makes the package more class-oriented while S4 object-orientation is really function-oriented causing all this friction in installation and loading.

Is there any way to ask R to lazy-load each object as a 'bundle of S4 methods with the same class'?

______________________________________________
R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to