gpt4 book ai didi

c# - C# 中的 Array.GetLength(dimension) 是如何工作的?

转载 作者:行者123 更新时间:2023-11-30 14:19:10 25 4
gpt4 key购买 nike

在 C# 中使用 Array.GetLength(dimension) 时,数组的大小是在每次调用时实际计算出来的,还是缓存/存储的大小,然后才访问该值?

我真正想知道的是,如果在大循环中使用,将局部变量设置为数组维度的长度是否会提高效率,或者我是否可以一遍又一遍地调用 array.GetLength() w/o 任何速度惩罚。

最佳答案

在这里自己开始缓存/优化肯定不是一个好主意。

在处理数组时,您必须遵循 (JIT) 优化器可以识别的标准路径。如果这样做,不仅 Length 属性会被缓存,更重要的是,索引边界检查可以在循环之前只进行一次。

当优化器丢失您的踪迹时,您将支付每次访问边界检查的罚款。

这就是为什么交错数组 (int[][]) 比 multi-dim (int[,]) 更快的原因。 int[,] 的优化完全缺失。无论如何,直到 Fx2,我还没有在 Fx4 中检查它的状态。

如果您想进一步研究这个问题,您建议的缓存通常称为“hoisting”。 ' 长度属性。

关于c# - C# 中的 Array.GetLength(dimension) 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3176288/

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