Jor*_*tao 115 c python compiler-construction performance
假设我有一个if
声明return
.从效率的角度来看,我应该使用
if(A > B):
return A+1
return A-1
Run Code Online (Sandbox Code Playgroud)
要么
if(A > B):
return A+1
else:
return A-1
Run Code Online (Sandbox Code Playgroud)
在使用编译语言(C)或脚本语言(Python)时,我应该更喜欢一个还是另一个?
Fré*_*idi 165
由于return
语句终止了当前函数的执行,因此这两种形式是等效的(尽管第二种形式可以说比第一种形式更具可读性).
两种形式的效率相当,如果if
条件为假,则底层机器代码必须执行跳转.
请注意,Python支持的语法允许您return
在您的情况下只使用一个语句:
return A+1 if A > B else A-1
Run Code Online (Sandbox Code Playgroud)
ske*_*r88 29
来自Chromium的风格指南:
退货后请勿使用其他:
# Bad
if (foo)
return 1
else
return 2
# Good
if (foo)
return 1
return 2
return 1 if foo else 2
Run Code Online (Sandbox Code Playgroud)
我个人else
尽可能避免阻塞。参见Anti-if 活动
此外,他们不收取“额外”的费用,你知道:p
“简单胜于复杂” &“可读性为王”
delta = 1 if (A > B) else -1
return A + delta
Run Code Online (Sandbox Code Playgroud)
关于编码风格:
无论哪种语言,大多数编码标准都禁止将单个函数中的多个return语句禁止作为不好的做法。
(尽管我个人会说在某些情况下多个返回语句确实有意义:文本/数据协议解析器,具有大量错误处理的功能等)
所有这些行业编码标准的共识是,该表达式应写为:
int result;
if(A > B)
{
result = A+1;
}
else
{
result = A-1;
}
return result;
Run Code Online (Sandbox Code Playgroud)
关于效率:
上面的示例和问题中的两个示例在效率方面都完全等效。在所有这些情况下,机器码都必须比较A> B,然后跳转到A + 1或A-1计算,然后将结果存储在CPU寄存器或堆栈中。
编辑:
资料来源: