在通过我们的公司网络访问文件时,我遇到了一些R问题变得非常迟缓的问题。所以我退回并做了一些测试,我惊讶地发现R file.copy()
命令 MUCH 比使用{{1}的等效文件副本慢}。这是一个已知问题还是我在这里做错了什么?
这是我的测试:
我有3个文件:
system(mv ...)
- ~100MB large_random.txt
- ~10MB medium_random.txt
- ~1 MB 我在我的Mac上创建了这些:
small_random.txt
但是以下R测试都是使用在虚拟机中运行的Windows完成的。 J驱车是当地的,N驱车距离酒店有700英里。
dd if=/dev/urandom of=small_random.txt bs=1048576 count=1
dd if=/dev/urandom of=medium_random.txt bs=1048576 count=10
dd if=/dev/urandom of=large_random.txt bs=1048576 count=100
结果如下:
library(tictoc)
test_copy <- function(source, des){
tic('r file.copy')
file.remove(des)
file.copy(source, des )
toc()
tic('system call')
system(paste('rm', des, sep=' '))
system(paste('cp', source, des, sep=' '))
toc()
}
source <- 'J:\\tidy_examples\\dummyfiles\\small_random.txt'
des <- 'N:\\JAL\\2018\\_temp\\small_random.txt'
test_copy(source, des)
source <- 'J:\\tidy_examples\\dummyfiles\\medium_random.txt'
des <- 'N:\\JAL\\2018\\_temp\\medium_random.txt'
test_copy(source, des)
source <- 'J:\\tidy_examples\\dummyfiles\\large_random.txt'
des <- 'N:\\JAL\\2018\\_temp\\large_random.txt'
test_copy(source, des)
那么是什么让系统调用更快?在大文件大小时,它是>慢了18倍!
答案 0 :(得分:3)
我遇到了同样的问题,即文件共享在网络共享驱动器上的性能低下。我的解决方案是使用fs :: file_copy()代替,它的性能甚至比直接复制系统要好。 https://www.rdocumentation.org/packages/fs/versions/1.3.1/topics/copy