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)
还有其他事情发生在这里.以下内容将在约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)