关于for循环的问题
if(condition)
{
for(i=0;i <n;i++)
{
dosomething();
}
}
else
{
for(i=0;i <n;i++)
{
dootherthing();
}
}
和
for(i=0;i <n;i++)
{
if(condition)
dosomething();
else
dootherthing();
}
各有什么优缺点?
[解决办法]
第一个判断少,同等情况下(n相等)执行耗时少,但是只判断一次没那么灵活,如果中途标志改了,不会动态的跟着变化;
第二个更耗时,但是更灵活,实时性好
[解决办法]
如果condition不会随着循环而发生改变,则前一个代码有更高效率。因为它只需要对condition进行一次判断。
如果condition在循环时会发生改变,则只能选择第二个代码。
[解决办法]
前者代码冗余度高,但只需要 一次判断.
后者代码冗余度低,但每次循环都需要判断,因为分支预测,速度略低.
但,在足够智能的编译器上,这两者会被优化成完全一样的代码.
此时,速度上没区别.
另:这里的假设是:condition不会随着dosomething和dootherthing发生改变
[解决办法]
第一段代码的可读性强点,而且代码执行效率高,但是冗余大
第二段代码可读性差,而且容易出错!
个人觉得如果代码不长的话,可以采用第一种,条理清晰点!