使用if-return-return或if-else-return更有效吗?

假设我有一个if带有的语句return。从效率的角度来看,我应该使用


if(A > B):

    return A+1

return A-1

要么


if(A > B):

    return A+1

else:

    return A-1

使用编译语言(C)或脚本语言(Python)时,我应该使用一种还是另一种?


慕森卡
浏览 2189回答 3
3回答

拉风的咖菲猫

由于该return语句终止了当前函数的执行,因此两种形式是等效的(尽管第二种形式比第一种更具可读性)。两种形式的效率都相当,如果if条件为假,则基础机器代码必须执行跳转。请注意,Python支持一种语法,该语法允许您仅使用一种return情况:return A+1 if A > B else A-1

慕哥6287543

返回后请勿使用其他:# Badif (foo)  return 1else  return 2# Goodif (foo)  return 1return 2return 1 if foo else 2

潇潇雨雨

关于编码风格:无论哪种语言,大多数编码标准都禁止将单个函数中的多个return语句禁止作为不好的做法。(尽管我个人会说在多种情况下多个返回语句确实有意义:文本/数据协议解析器,具有大量错误处理的功能等)所有这些行业编码标准的共识是,该表达式应写为:int result;if(A > B){  result = A+1;}else{  result = A-1;}return result;关于效率:上面的示例和问题中的两个示例在效率方面都完全等效。在所有这些情况下,机器代码都必须比较A> B,然后跳转到A + 1或A-1计算,然后将结果存储在CPU寄存器或堆栈中。编辑:资料来源:MISRA-C:2004规则14.7,依次引用...:IEC 61508-3。第3部分,表B.9。IEC 61508-7。C.2.9。
打开App,查看更多内容
随时随地看视频慕课网APP