On 24/06/2021 3:44 p.m., Gábor Csárdi wrote:
On Thu, Jun 24, 2021 at 8:55 PM Duncan Murdoch <murdoch.dun...@gmail.com> wrote:
[...]
A disadvantage of the devtools method is that a regular build after
load_all() seems to do a full 75 sec build:  load_all caches things for
itself, but doesn't put them in the same place as a regular build, so
make doesn't see the object files, and rebuilds all of them.  Or at
least it did that last time I tried it, a few months ago.

That is definitely not how load_all() should work, so this might be a
bug. AFAIK it does not use a special cache or anything, just compiles
the files inside the package tree, like a regular package install from
a package tree. This is a regular install after load_all():

❯ system.time(devtools::load_all())
ℹ Loading rgl
This build of rgl does not include OpenGL functions.  Use
  rglwidget() to display results, e.g. via options(rgl.printRglwidget = TRUE).
    user  system elapsed
   0.411   0.024   0.446

❯ q()

❯ time R CMD INSTALL .
* installing to library ‘/Users/gaborcsardi/Library/R/4.0/library’
[...]
* DONE (rgl)
R CMD INSTALL .  9.95s user 1.28s system 97% cpu 11.503 total

So a load_all() that does not need to recompile anything, just reload
the R code, takes less than half a second. After that a regular
install from the command line takes about 12s, most of which is the
byte compilation. If I turn byte compilation off, then it is less than
6s.

But it is rare that you actually need to install the package while
working on it, and you typically just use load_all() to iterate, or
devtools::test() if you use testthat.

I'm working in RStudio on a Mac, in case that makes any difference. I've just done the following:

1.  devtools::load_all(".")

This does a full compile of the C++ source, so it's slow.

2.  devtools::load_all(".")

No recompile, so really quick.

3.  Click "Install and Restart" button

This does R CMD INSTALL --pre-clean ....  so it's really slow.

4.  Click "Install and Restart" button again

This is the fast build I was talking about:  no recompiling.

5.  devtools::load_all(".")

This does the full compile again, so it's slow.

So it appears that "Install and Restart" doesn't trust the object files that load_all() produced, and load_all() doesn't trust the object files that R CMD INSTALL produced.

This might be influenced by my choice not to "Use devtools package functions" in the Build Tools menu. Probably the slow compile in step 3 is an RStudio issue, not a devtools issue: it used different command line options. But the slow compile in step 5 looks like a devtools issue.

Your last paragraph is incorrect if "you" is taken to be me rather than a generic developer: I *often* want to install the package while working on it. I like the help system to work; I like to work on the source code and help pages together. That may not be typical. Certainly help pages seem to be a low priority in most tidyverse packages.

Duncan Murdoch

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

Reply via email to