4By*_*tes 1 c++ inline disassembly visual-studio visual-c++
我如何设置编译器生成相同的代码?对于例如:
inline bool iszero(int a)
{
return (a == 0);
}
int main()
{
int a = 4;
if(a == 0) // First
a = 5;
if(iszero(a)) // Second
a = 5;
///...
}
Run Code Online (Sandbox Code Playgroud)
在调试模式(带内联)中,反汇编代码如下所示:
if(a == 0) // First
a = 5;
bool temp; // Second
if(a == 0)
temp = 0;
else
temp = 1;
if(temp == 0)
a = 5;
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
为什么要问这个问题?我需要使用内联函数调试我的应用程序(用于加速调试),我不想在调试模式下失去性能.
在发布模式下进行编译,并进行全面优化.生成的代码将等效于:
int main()
{
}
Run Code Online (Sandbox Code Playgroud)
在没有优化的情况下比较代码没有意义,因为在优化基准测试时没有任何意义.
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |