Performance If/else性能
我试图通过比较两个if/else语句,找出CPU使用率和性能的差异,使用以下函数Performance If/else性能,performance,if-statement,Performance,If Statement,我试图通过比较两个if/else语句,找出CPU使用率和性能的差异,使用以下函数 function f(x): if(condition) return true; else return false; function f'(x): if(condition) return true; return false; 函数的用途并不重要,当然,在这两种情况下,如果'if'为true,您都希望返回true,否则返回false 在性能和CPU使用方面,这两段代码做的事情是一样的,当
function f(x):
if(condition) return true;
else return false;
function f'(x):
if(condition) return true;
return false;
函数的用途并不重要,当然,在这两种情况下,如果'if'为true,您都希望返回true,否则返回false
在性能和CPU使用方面,这两段代码做的事情是一样的,当删除else语句并使用顺序执行来执行“else”时,这两个程序之间会有什么区别,或者编译时会丢失差异吗?这两个函数之间没有差异。任何半体面的编译器都会为它们生成相同的代码 因为
if
分支的末尾包含return
,所以第一个程序中的else
是多余的。当程序被翻译成机器指令时,您会得到如下结果:
start: LD $condition -- Check condition
JZ else_br -- Conditional jump
LD true_val
RET -- Return true
else_br: LD false_val
RET -- Return false
在第二个程序中,
else
分支为空,因此指令序列是相同的。它不是在任何特定的语言中,只是使用准伪代码,因为我认为这更有意义。您是否尝试过用您选择的语言编译类似的代码,并查看生成的低级指令是否有差异?另外,我不确定这个问题是否可以用一种与语言无关的一般意义来回答,因为答案很可能取决于所使用的语言和编程环境。这些函数具有相同的CFG(倒V,如果附加专用的退出块,则为菱形),并且节点包含相同的代码,所以这真的不应该有什么区别。。但这取决于编译器,不需要思考和猜测。衡量这一点并知道这一点很简单。@BACON刚刚在gcc中运行了一个快速的c文件尝试,它们完全相同