vai*_*hav 6 c# logic for-loop switch-statement
请帮我确定以下哪些是更优化的代码?
for(int i=0;i<count;i++)
{
switch(way)
{
case 1:
doWork1(i);
break;
case 2:
doWork2(i);
break;
case 3:
doWork3(i);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
要么
switch(way)
{
case 1:
for(int i=0;i<count;i++)
{
doWork1(i);
}
break;
case 2:
for(int i=0;i<count;i++)
{
doWork2(i);
}
break;
case 3:
for(int i=0;i<count;i++)
{
doWork3(i);
}
break;
}
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,总是在每次迭代中始终检查开关情况条件的开销.在第二种情况下,开销不存在.我觉得第二种情况要好得多.如果有人有任何其他解决方法,请帮我建议.
甲switch低,连续值是出奇的快-这种类型的跳跃已经高度优化处理.坦率地说,你问将没有任何区别在绝大多数情况下- 任何在doWork2(i);将要淹没这个; 哎呀,虚拟电话本身可能会淹没它.
如果真的,真的,真的很重要(我很难想到这里真实的情况),那么:衡量它.在任何明显的情况下,只有测量它的方法才是实际的,精确的代码 - 你不能概括微微优化.
所以:
| 归档时间: |
|
| 查看次数: |
2069 次 |
| 最近记录: |