为什么加载保存的R文件会增加CPU使用率?

为什么加载保存的R文件会增加CPU使用率?,r,file-io,cpu-usage,R,File Io,Cpu Usage,我有一个R脚本,我想经常运行。几个月前,当我写这篇文章并开始写作时,没有问题。 现在,我的脚本消耗了几乎所有(99%)的CPU,而且比以前慢了。我正在服务器上运行脚本,其他用户在脚本运行时会遇到服务器响应缓慢的问题。 我试图找出这段代码在哪里慢。下面的循环几乎占用了脚本使用的所有时间和CPU for (i in 1:100){ load (paste (saved_file, i, ".RData", sep="")) Do something (which is fast)

我有一个R脚本,我想经常运行。几个月前,当我写这篇文章并开始写作时,没有问题。 现在,我的脚本消耗了几乎所有(99%)的CPU,而且比以前慢了。我正在服务器上运行脚本,其他用户在脚本运行时会遇到服务器响应缓慢的问题。 我试图找出这段代码在哪里慢。下面的循环几乎占用了脚本使用的所有时间和CPU

for (i in 1:100){
    load (paste (saved_file, i, ".RData", sep=""))
    Do something (which is fast)
    assign (paste ("var", i, sep=""), vector)
}
每次迭代中加载的数据约为11MB。当我为任意“I”运行上述脚本时,加载文件步骤比其他命令花费更长的时间。 我花了几个小时阅读论坛帖子,但没有得到任何关于我的问题的提示。如果您能指出我遗漏了什么,或者建议用R加载文件的更有效方法,那就太好了

编辑:在代码中添加空格,以便于阅读

paste(saved_file, i, ".RData", sep = "")
在每次迭代时加载一个对象,名称为
xxx1
xxx2
,依此类推。 您是否尝试
rm
循环结束时的对象?我想不管你的变量是否被重用,对象都会留在内存中

提示:在代码中添加空格(就像我做的那样),这样更容易阅读/调试


“花费更长的时间”并不意味着“使用更多的CPU”。您使用什么工具来检查CPU和内存使用情况?例如,如果Windows,--T打开TaskMgr会让您观察这些
Rprof
可以告诉您哪个命令占用了运行时间。我在linux中使用“top”命令查看CPU使用情况。我还通过在每次迭代中加载文件来检查%CPU。%这样做CPU就会增加。现在,在我看来,尽管我在每次迭代中都重写了对象,但对象仍然保留在内存中(但我不确定)。注意:我在每次迭代中加载的所有保存的文件都有相同的变量名。您是否尝试过分别检查保存的文件中的内容?听起来可能比你想象的要多。我检查并试图删除我不需要的数据,但文件大小没有明显减少。我可以想象,唯一占用CPU的负载是解压缩,然后分配内存。您确认保存文件中存储的内容了吗?保存文件大小没有随时间变化吗?也许您的文件增长了(尽管听起来您可能是为了回应Dason的评论而这样做的)。另一种可能是服务器上存在其他问题。。。启动脚本时有多少内存可用?在跑步过程中有多少是免费的。也许它对交换文件的影响很大?是的,它在每次迭代中都会创建一个变量,但它们比加载的文件小得多。你的意思是多个变量可能是问题所在吗?我甚至尝试将向量存储为矩阵的列,但没有帮助。顺便问一下,你是指单词/字符之间还是行间的空格?