Man*_*emi 0 c++ performance if-statement return
这2个有什么区别吗?
if (condition)
{
std::cout << "Condition is true";
}
else
{
std::cout << "Condition is false";
}
Run Code Online (Sandbox Code Playgroud)
或者
if (condition)
{
std::cout << "Condition is true";
return 0;
}
std::cout << "Condition is false";
Run Code Online (Sandbox Code Playgroud)
我知道使用第二个是不好的,因为也许你后面还有更多的代码。但是在代码的最后我们没有其他任何东西,使用第二个不是更好吗?
我对原始问题进行了如下修改,
void f1() {
int a = 0;
if (a > 0) {
a = 1;
} else {
a = 2;
}
}
void f2() {
int a = 0;
if (a > 0) {
a = 1;
return;
}
a = 2;
}
Run Code Online (Sandbox Code Playgroud)
这是编译后的程序集。f1()
并且f2()
几乎相同。
f1():
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], 0
cmp DWORD PTR [rbp-4], 0
jle .L2
mov DWORD PTR [rbp-4], 1
jmp .L4
.L2:
mov DWORD PTR [rbp-4], 2
.L4:
nop
pop rbp
ret
f2():
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], 0
cmp DWORD PTR [rbp-4], 0
jle .L6
mov DWORD PTR [rbp-4], 1
jmp .L5
.L6:
mov DWORD PTR [rbp-4], 2
.L5:
pop rbp
ret
Run Code Online (Sandbox Code Playgroud)
唯一的区别是.L4
有一个nop
. 可以在此处找到更多详细信息。
归档时间: |
|
查看次数: |
91 次 |
最近记录: |