+ -
当前位置:首页 → 问答吧 → if else 以下两种用法 那种高效

if else 以下两种用法 那种高效

时间:2011-12-28

来源:互联网

C/C++ code

void fun1(void)
{
    int var;
    if (var > 0)
    {
        //执行这里大约的100条语句
    }
    else
    {
        //执行几条语句
    }
    
    return ;
}

void fun2(void)
{
    int var;
    if (!(var>0)
    {
        //执行几条语句
        return ;
    }
    
    //执行这里大约的100语句 
}



请问 上面的两个 函数 那个函数执行的效率高 
ps:两个函数里面的代码是一样的 只是 排列方式不一样 位置不一样

作者: huangqiyin   发布时间: 2011-12-28

效率不是个简单的执行的快慢(编译后少相对执行快),而是个执行速度、资源占用等的综合。
上面第2段代码执行的快,编译后代码少一点点儿,效率高。

第1段代码的写法是可读性与可维护性的考虑,对于非C++等系统层编码的推荐写法。

作者: sagahu0359   发布时间: 2011-12-28

引用 2 楼 sagahu0359 的回复:

效率不是个简单的执行的快慢(编译后少相对执行快),而是个执行速度、资源占用等的综合。
上面第2段代码执行的快,编译后代码少一点点儿,效率高。

第1段代码的写法是可读性与可维护性的考虑,对于非C++等系统层编码的推荐写法。

我是写嵌入式代码的,目标机是arm7的 在某个局部,对时间的要求极高,所以 这里的时间 要求性极高!

作者: huangqiyin   发布时间: 2011-12-28

也许可以考虑一下指令流水线

作者: udbwcso   发布时间: 2011-12-28

引用 7 楼 udbwcso 的回复:

也许可以考虑一下指令流水线


哥们具体点!

作者: huangqiyin   发布时间: 2011-12-28

高质量C++说得很清楚

作者: wanyuan19890515   发布时间: 2011-12-28

这个完全没有差别.. ........

作者: mingliang1212   发布时间: 2011-12-28

嵌入式果断用汇编啊!

作者: neolyao   发布时间: 2011-12-28

这得看到底是var>0多一些还是!(var>0)多一些。
高质量的编程要求将最可能出现的情况放在前面。这符合人的思维习惯,也符合性能提升的要求。

顺序执行的时候,流水线的利用率是最高的。遇到跳转的时候,流水线就得清空,然后将跳转后的指令依次装入流水线。
if...else...通常编译成条件判断,如果条件成立,则执行后面的指令,如果条件不成立,跳转到else处...。

作者: finewind   发布时间: 2011-12-28