几年后编辑:* 我做了write that blog post,它包含了另一个重要的内容。我们真的需要一个文件~/.ccache/ccache.conf,因为:a)R新解压缩文件(新的ctime),并将它们放到temp.目录中。所以当使用R CMD INSTALL somepkg_1.2.3.tar.gz时(而不仅仅是源代码),这很有帮助:
max_size = 5.0G
# important for R CMD INSTALL *.tar.gz as tarballs are expanded freshly -> fresh ctime
sloppiness = include_file_ctime
# also important as the (temp.) directory name will differ
hash_dir = false
cache directory /home/myuser/.ccache
primary config /home/myuser/.ccache/ccache.conf
secondary config (readonly) /etc/ccache.conf
cache hit (direct) 0
cache hit (preprocessed) 0
cache miss 989
cache hit rate 0 %
called for link 12
preprocessor error 12
cleanups performed 16
files in cache 177
cache size 31.1 MB
max cache size 5.0 GB
Note that cache isn't getting hit, which means ccache isn't doing anything.
2条答案
按热度按时间w8f9ii691#
我有点迟了一个简短的博客文章关于这一点,但我提到过几次之前:使用ccache。当文件不改变时(即当你只是改变帮助页面时),或者当很少的文件改变时,它会有很大的帮助。缓存是一个非常聪明的技巧,并且包是健壮的。
在Ubuntu/Debian上:
sudo apt-get install ccache
,然后是~/.R/Makevars
中的以下内容:这也允许在
g++
版本之间切换,将其更改为clang++
留给读者作为练习;-)除此之外,请参阅
R CMD build
和R CMD INSTALL
的选项以跳过小插图和/或手动构建,从而进一步加快重建速度。说明:这里是重新安装Rcpp本身(新鲜从一个
git pull
),其中第一次安装需要21.9秒在我的(体面的)机器上工作,第二次然后只需要1.4秒感谢ccache
:~/.ccache/ccache.conf
,因为:a)R新解压缩文件(新的ctime
),并将它们放到temp.目录中。所以当使用R CMD INSTALL somepkg_1.2.3.tar.gz
时(而不仅仅是源代码),这很有帮助:0x6upsns2#
上面的Dirk's answer为我指出了正确的方向,但是还不够。因为他要求我不要附加我所要求的最后步骤,所以我在这里这样做。没有下面的内容,我的问题就不可能得到回答。
Dirk的回答对我来说并不奏效。如果编译对你来说仍然很慢,试着运行:
结果看起来有点像这样
您可以使用:
做一些调试,虽然这对我没有帮助。
解决问题的办法是:
事实证明,ccache有时会考虑文件的位置。R CMD build.似乎是在临时目录中构建的,因此文件的位置每次都在变化。