我当前正在运行代码。我的CPU是100%,但我的RAM只有20%。有人告诉我,拥有更多的RAM可以加快处理速度。但是如何使系统使用更多的RAM?
答案 0 :(得分:1)
正如评论中指出的那样,RAM的最佳数量和计算能力取决于您要解决的问题。
作为一个例子,让我们考虑迭代式减脂(燕麦CPU)和矩阵运算(加载RAM)。作为参考,当我的R会话不运行时,其消耗CPU:〜0%,RAM:〜54 Mb(Sony Yoga 260,Windows 10,但是相同的原则适用于Ubuntu):
然后,我们生成一千万个正态分布的随机数(使用while
循环一对一):
i <- 0
while(i < 1e7) {
rnorm(1)
i <- i + 1
}
它消耗适度的RAM,但是将处理器加载到满负荷(我的CPU是多核,因此没有100%,但是〜30%)。
如果您运行一些内存要求很高的算法(例如大型矩阵乘法),那么内存量至关重要,就好像您没有足够的RAM时您需要访问HDD一样,它的速度要慢一些。参见下面的笛卡尔积示例-向量元素的所有组合-具有10000个元素的两个向量:
z <- expand.grid(seq(1e4), seq(1e4))
要更有效地使用CPU和RAM,您需要:
1)使用向量化的计算(将for
循环更改为apply-family函数,并从标量迁移到向量)。 R在向量\矩阵处理中非常有效。
2)使用parallel computations来利用您所有的处理器内核。