在R中的RAM中保存列表
我正在运行一个分类算法在R中的RAM中保存列表,r,R,我正在运行一个分类算法 我有47个模型 我针对每个模型测试我的输入 这些型号总共占用2.7GB的磁盘空间 我使用r.cache包将模型存储在磁盘上 我从磁盘上一个接一个地检索模型并运行预测 所以我认为将模型加载到RAM中是有意义的。这将节省io时间并加快进程 我调整了函数(见下面的代码),将模型加载到列表中,并将模型保存在全局环境中(假设全局环境在RAM中) 但是,功能速度没有变化,RAM内存使用似乎也没有变化 问题: 我现在假设全局环境变量被缓存到磁盘上,对吗 是否可以在RAM中保存大内存
- 我有47个模型
- 我针对每个模型测试我的输入李>
- 这些型号总共占用2.7GB的磁盘空间
- 我使用
包将模型存储在磁盘上r.cache
- 我从磁盘上一个接一个地检索模型并运行预测
if(is.null(modelsList))
{
modelsList=list()
for(majorFinal in majorAsFactor)
{
print(paste("\n\n\n\npredicting.....",majorFinal))
key=list(paste("KSVM",majorFinal,sep='_'))
svm_model <- loadCache(key)
modelsList[[count]] <- svm_model
count <- count+1
svm_pred <- predict(svm_model, onerowdfcache)
if(as.character(svm_pred)!="OTHER")
{
results<-c(results,as.character(svm_pred))
print(results)
}
}
}
else
{
count=as.numeric(1)
for(svm_model in modelsList)
{
print(paste("\n\n\n\npredicting.....",count))
count=count+1
svm_pred <- predict(svm_model, onerowdfcache)
if(as.character(svm_pred)!="OTHER")
{
results<-c(results,as.character(svm_pred))
print(results)
}
}
}
if(is.null(modelsList))
{
modelsList=list()
对于(MajorFactor中的majorFinal)
{
打印(粘贴(“\n\n\n\n命令…”,主要最终版本))
键=列表(粘贴(“KSVM”,主最终,sep=”))
svm_model您可以将尽可能多的数据加载到R中,就像您的机器有RAM一样。通常,如果您想用这些数据做任何事情,您的对象应该只占用机器RAM的1/3。您的代码可能比较慢的一个原因是,您正在通过向它们添加项来增加结果
和模型列表
。但不是在第二秒钟假设。那么,第一个条件可能会更慢,不是吗?嗯,无论是if
还是else
,你的结果都在增长。但是实际的速度成本是不可能精确地说出来的。我不知道你的数据有多大,你在做多少次迭代。如果它都很小,那么速度成本就会很低ld最小。结果很小(通常是两个10个字符的字符串)。在第一种情况下,通过r.cache从磁盘加载的模型很大,总计2.7GB。我认为第二种情况已经消除了这一点,但性能没有差异。请将脚本分解为组件,并测量system.time()每个部分所需的时间
功能。我猜从缓存加载模型不会花费任何时间。如果您经常使用磁盘中的文件,大多数操作系统会将其保存在内存缓冲区中以更快地加载。RAM速度约为10000 MB/s。您可以将与您的机器具有RAM的数据一样多的数据加载到R中。通常,如果您想对该数据执行任何操作,您的对象应该d可能只占用机器RAM的1/3。代码可能会变慢的原因之一是,通过向结果
和模型列表
添加项目,它们都在增长。但在第二种情况下不会。因此,人们会认为第一种情况会变慢,不是吗?嗯,在两种情况下,您都在增长结果
和else
。但是实际的速度成本不可能精确地说出来。我不知道您的数据有多大,您正在进行多少次迭代。如果数据都非常小,速度成本将是最小的。结果很小(通常是两个10字符的字符串)。在第一种情况下,通过r.cache从磁盘加载的模型非常庞大,总计2.7GB。我认为第二种情况已经解决了这一问题,但性能没有差异。请将脚本分解为组件,并测量每个部分在system.time()中所用的时间
功能。我猜从缓存加载模型不会花费任何时间。如果您经常使用磁盘中的文件,大多数操作系统会将其保存在内存缓冲区中以更快地加载。RAM速度约为10000 MB/s。