【发布时间】:2015-03-14 13:42:34
【问题描述】:
标题说明了一切:
我创建和排列,比如 ARRAY[10000], 我设置了只需要访问 1-100 和 900-2000 的数据的范围。
与我将数组声明为 ARRAY[2001] 相比,以这种方式访问和/或更改一条数据所花费的时间会更多吗
如果我的数组只包含 1-100 和 900-2000 的数据,访问和/或更改时间会改变吗?
我看过一些关于这方面的论文,但我并不清楚,希望我能在这里得到更简洁的答案。
【问题讨论】:
-
您的访问模式如何?为什么你甚至会考虑创建一个巨大的数组,却连 80% 都不看?
-
我不明白您将范围设置为 1-100 和 900-2000 是什么意思,但是数组的访问时间不会改变,但是您可能会浪费大量记忆
-
除非您传递的数组大小太大而无法放入缓存中,否则会导致管道停顿或使数组小到足以放入寄存器中,我真诚地怀疑它。
-
如果你有一个 3 维对象并且有一个环形的约束,你只需要访问那个环形的数据点。你的“甜甜圈”的整个中心永远不会被触及。如果没有 x-y-z 坐标,您将不得不在系统上的每次运行期间进行标准化。 @5gon12eder
-
@WillFox 为什么不用
x-y-z坐标创建一个struct(s) 数组呢?
标签: c performance time