【发布时间】:2016-04-17 21:30:22
【问题描述】:
为了激发我的问题,请考虑在 Julia 中处理元素类型 Int 的 jagged arrays(为简单起见)时的情况。有两种存储方式:
- 作为
Vector{Vector{Int}} - 与
Vector{Union{Vector{Int}, Int}}一样(特别是,如果希望存储足够多的一元向量)
我的问题是哪个更高效/更快/更好?
要回答这个问题,除其他外,我需要知道它们是如何存储在内存中的。即:
我认为
Vector{Vector{Int}}类型的变量将被视为同类类型数组,因此我希望它连续存储在内存中,因此更多cpu 缓存友好。我对吗?还是连续性只适用于元素数据类型为原始的数组?Vector{Union{Vector{Int}, Int}}类型的变量是否会被视为异构数组,因此不 连续存储在内存中?将内存中的连续表示的好处与没有数组容器用于 1 元素数组成员的好处相比,例如,将它们存储为原始数据类型(在这种情况下为
Int)?哪一种效率更高?
【问题讨论】:
-
引用将连续存储,而不是所有数据。我不认为联合或非联合类型会产生任何实质性差异。
标签: arrays multidimensional-array julia jagged-arrays ragged