有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

c#函数中过早返回的效率

这是我作为一个缺乏经验的程序员经常遇到的情况,尤其是对于我的一个雄心勃勃、速度密集的项目,我正试图优化它。对于主要的C类语言(C、Objc、C++、爪哇、C等)及其常用编译器,这两个函数是否会同样有效地运行?编译后的代码有什么不同吗

void foo1(bool flag)
{
    if (flag)
    {
        //Do stuff
        return;
    }

    //Do different stuff
}

void foo2(bool flag)
{
    if (flag)
    {
        //Do stuff
    }
    else
    {
        //Do different stuff
    }
}

基本上,当breakreturn提前时,是否有直接的效率奖励/惩罚?stackframe是如何涉及的?有特殊情况吗?是否有任何因素(如内联或“Do stuff”的大小)会显著影响这一点

我一直主张通过小优化来提高易读性(我在参数验证中经常看到foo1),但这种情况经常出现,所以我想一劳永逸地抛开所有担忧

我知道过早优化的陷阱。。。这些都是痛苦的回忆

编辑:我接受了一个答案,但EJP的答案非常简洁地解释了为什么return的使用几乎可以忽略不计(在汇编中,return会在函数末尾创建一个“分支”,速度非常快。该分支会改变PC寄存器,还可能会影响缓存和管道,这非常小。)特别是在这种情况下,它实际上没有什么区别,因为if/elsereturn都会在函数的末尾创建相同的分支


共 (0) 个答案