循环执行时间

Mik*_*ebb 0 c# performance while-loop

我们在C#while循环中遇到了性能问题.循环非常缓慢只做一个简单的数学计算.事实证明,parmIn从999999999到MaxInt ,这可能是一个巨大的数字.我们没有预料到巨大的价值parmIn.我们使用不同的方法修复了代码.

循环编码为了简单起见,做了一个数学计算.我只是想知道包含一个简单数学计算的while循环的单次迭代的实际执行时间是多少?

int v1=0;

while(v1 < parmIn) {
    v1+=parmIn2;
}
Run Code Online (Sandbox Code Playgroud)

Mik*_* M. 9

还有其他事情发生在这里.以下内容将在约100毫秒内完成.你说parmIn可以接近MaxInt.如果这是真的,并且ParmIn2> 1,那么你不会检查你的int + new int是否会溢出.如果ParmIn >= MaxInt - parmIn2,你的循环可能永远不会完成,因为它将回滚到MinInt并继续.

static void Main(string[] args)
{
    int i = 0;

    int x = int.MaxValue - 50;

    int z = 42;

    System.Diagnostics.Stopwatch st = new System.Diagnostics.Stopwatch();
    st.Start();

    while (i < x)
    {
        i += z;
    }

    st.Stop();

    Console.WriteLine(st.Elapsed.Milliseconds.ToString());
    Console.ReadLine();

}
Run Code Online (Sandbox Code Playgroud)