我注意到Java中library(dplyr)
DF1 = data.frame(x=c(10,5), y=c('s','h'))
DF2 = data.frame(x=c(11,5,5), z=c('h', 's', 'h'), y = c('h','s','s'))
DFlist <- list(DF1, DF2)
colsKeep <- c('x', 'y')
xRange <- 1:5
yVal <- 's'
lapply(DFlist, function(x){x %>%
select(one_of(colsKeep)) %>%
filter(x %in% xRange & y == yVal)})
对象的第一次初始化比后续初始化RandomAccessFile
对象到磁盘上的同一文件要慢得多。是否有一些后台缓存操作系统可以实现这一点?
例证:我正在从磁盘加载图像并允许用户翻阅它们。我希望瓶颈是图像的显示,但是在第一次加载时,瓶颈是加载图像(使用JProfiler发现瓶颈;每次调用RandomAccessFile
~8ms)。如果我翻回我已经查看过的图片,对RandomAccessFile<Init>
的调用只有几微秒。
有没有人见过这样的东西?有没有解决方法?数据集可能包含100,000个图像,因此初始化一堆虚拟RandomAccessFile<Init>
对象可能不可行。
初始化的代码行是:
RandomAcessFile
答案 0 :(得分:3)
是的,操作系统缓存。
如果绕过操作系统缓存,后续打开的文件将与第一个一样慢,那么为什么要这样呢?
第一次打开文件时缓存并没有减慢,它不会等待慢速硬盘驱动器读取数据,从而提高了重新打开文件的性能。