【发布时间】:2011-01-19 09:15:53
【问题描述】:
我是 R 的新手。假设数据框和矩阵的内存布局相同。
在下面的矩阵中
a=矩阵(1:10000000,1000000,10)
它有 1M 行和 10 列。行或列的内存是物理顺序的吗?或者是物理内存先存储[1,1],[2,1],[3,1],,[1M,1],[2,1]还是[1,2],[1,2], ..[1,10],[2,1]...?
假设10M元素的矩阵大小为100M,L2缓存为4M,则L2缓存无法存储所有这10M元素。如果我们按顺序处理数据,我们将有更少的 L2 缓存丢失率。对于我们的案例,我们需要逐行处理并同时读取几列,例如列A、B、C,然后创建一些结果。如果内存的布局是先在第一行存储 10 个项目,然后在第二行存储 10 个项目,那么性能可能会更好。
有没有办法控制内存布局?
【问题讨论】:
-
您可以尝试比较使用
a与t(a) 的性能,看看行/列是否有很大的影响。
标签: r