gpt4 book ai didi

r - 数据帧(矩阵)性能 : memory layout

转载 作者:行者123 更新时间:2023-12-01 09:37:46 25 4
gpt4 key购买 nike

我是 R 的新手。假设数据框和矩阵的内存布局相同。

在以下矩阵中

a=matrix(1:10000000,1000000,10)



它有 100 万行和 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个项目,那么性能可能会更好。

如果有什么办法可以控制内存布局?

最佳答案

矩阵按列存储:

> m=matrix(1:12,nrow=3)
> m
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12

数据框只是漂亮的列表,列表存储为元素的向量。我什至不确定列表元素是否保证在内存中是连续的。

阅读编写 R 扩展以获取有关如何处理内存的更多信息。据我所知,没有办法控制内存布局。在它成为问题之前不要担心它。

关于r - 数据帧(矩阵)性能 : memory layout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4733481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com