为了激发我的问题,考虑在 Julia中处理元素类型的锯齿状数组(为简单起见)时的情况。Int
有两种存储方式:
- 作为
Vector{Vector{Int}}
- 作为
Vector{Union{Vector{Int}, Int}}
(特别是,如果希望存储足够多的一元向量)
我的问题是哪一个更高效/更快/更好?
要回答这个问题,除其他外,我需要知道它们是如何存储在内存中的。即:
我认为 type 的变量
Vector{Vector{Int}}
将被视为同类类型数组,因此我希望它连续存储在内存中,因此对 cpu-cache 更友好。我对吗?还是连续性仅适用于元素数据类型为原始的数组?一种类型的变量是否会
Vector{Union{Vector{Int}, Int}}
被视为异构数组,因此不会 连续存储在内存中?将内存中连续表示的好处与没有数组容器用于 1 元素数组成员的好处相比,即将它们存储为原始数据类型(
Int
在这种情况下)?哪一种效率更高?