[R-pkg-devel] how to prevent a small package from yielding a large installed size?
On 6/15/20 6:52 PM, Duncan Murdoch wrote:
On 15/06/2020 12:30 p.m., Daniel Kelley wrote:
Duncan, thanks very much for that very helpful hint. ?I got as follows. ??My guess is that the first column in rdx$variables is an address offset, and so it seems that the lion's share of the storage is dedicated to items with names starting with a decimal point. ?For example, the "[[" item is at offset of nearly 4M. ?I may try fiddling with my code in which I specialize that method, to see whether I can reduce the memory footprint. ?From what I can gather, both linux and windows build argoFloats into a package with R directory of about 2.5M size, which is a lot better than what I get in macOS but still over the warning threshold (I think) and therefore I worry about CRAN acceptance.
The second column is the size, so actually the lion's share is dedicated to things that are not being shown.? They are indexed in the rdx$references list, and are probably going to be harder to track down, because they probably don't have names assigned by you. For example, in the rgl package, I see
rdx$references
$`env::1` [1]? 661 1037 $`env::10` [1] 123952??? 221 $`env::11` [1] 126378??? 224 $`env::12` [1] 128575??? 226 [ many more deleted ] Presumably `env::1` is an environment which might be referenced by several of the functions, and I'm guessing that one of yours is really big.? This can happen accidentally:? you have a temporary local variable in a function and create and save another function, or a formula, or some other environment-using object, and save the useless local variable along with it. I don't have a good suggestion for figuring out what's in the bad environment; maybe someone else can suggest how to read an object from the .rdb file using R code.? Internally R uses C code for this.
I think this can be done using lazyLoadDBfetch(key, file, compressed, hook). "key" is c(128575L, 226L) for "env::12" above. See library/base/R/lazyload.R. "file" is the .RDB file, "compressed" is TRUE, "envhook" for this can be "function(x) NULL" Tomas
Duncan Murdoch
______________________________________________ R-package-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel