for 循环一般有两种使用方式
for(int i = 0;i<arr.length;i++)
for(int i = arr.length-1;i>=0;i--)
通常来说 第二个要快一点
原因是因为
在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。
i–操作本身会影响CPSR(当前程序状态寄存器),CPSR常见的标志有N(结果为负), Z(结果为0),C(有进位),O(有溢出)。i > 0,可以直接通过Z标志判断出来。
i++操作也会影响CPSR(当前程序状态寄存器),但只影响O(有溢出)标志,这对于i < n的判断没有任何帮助。所以还需要一条额外的比较指令,也就是说每个循环要多执行一条指令。
考虑使用情况的话:arr.length可能会变化, 所以有可能比较时每次都要从arr里面取length的值.是一个问题。
static void Main(string[] args)
{
TimeSpan ts2;
Stopwatch sw1 = new Stopwatch();
sw1.Start();
int[] b = new int[10000000];
for (int i = 10000000 - 1; i >= 0; i--)
{
b[i] = i;
}
sw1.Stop();
ts2 = sw1.Elapsed;
Console.WriteLine(ts2.TotalMilliseconds);
Stopwatch sw = new Stopwatch();
sw.Start();
int[] a = new int[10000000];
for(int i = 0; i < 10000000; i++)
{
a[i] = i;
}
sw.Stop();
ts2 = sw.Elapsed;
Console.WriteLine(ts2.TotalMilliseconds);
Console.ReadLine();
}