我有一个整数数组,并且正在循环遍历它们:
for (int i = 0; i < data.Length; i++)
{
// do a lot of stuff here using data[i]
}
如果我这样做:
for (int i = 0; i < data.Length; i++)
{
int value = data[i];
// do a lot of stuff with value instead of data[i]
}
有没有性能上的增益/损失?
据我了解,C/C++数组元素直接访问,即整数的n元素数组具有长度为n * sizeof(int)的连续内存块,并且程序通过类似于*data[i] = *data[0] + (i * sizeof(int))的方式访问元素i。(请原谅我的符号滥用,但你明白我的意思。)
这意味着C/C++应该在引用数组变量方面没有性能上的增益/损失。
C#呢? C#有很多额外的开销,比如data.Length、data.IsSynchronized、data.GetLowerBound()和data.GetEnumerator()。
显然,C#数组不同于C/C++数组。
那么结论是什么?我应该将int value = data[i]存储起来并使用value吗?还是没有性能影响?