初步接触____编译器的优化

编译器VC++6.0有两种优化方案 O1(占用空间最小)和O2(运行效率最快) Debug下,编译器的优化能力是有限的,需要增加一些调试代码。Release版本下,编译器采用O2方案

     例子:
    源码:
    int main()
     {
     15+20;
     int nVarOne = 0;
     int nVarTwo = 0;
     nVarOne = nVarOne+1;
     nVarOne = 1+2;
     nVarOne = nVarOne+nVarTwo;
     printf("nVarOne = %d\r\n", nVarOne);

     return 0;
     } 
 Debug下:

     mov     [ebp+var_4], 0
     mov     [ebp+var_8], 0
     mov     eax, [ebp+var_4]
     add     eax, 1
     mov     [ebp+var_4], eax
     mov     [ebp+var_4], 3
     mov     ecx, [ebp+var_4]
     add     ecx, [ebp+var_8]
     mov     [ebp+var_4], ecx
     mov     edx, [ebp+var_4]
     push    edx
     push    offset Format   ; "nVarOne = %d\r\n"
     call    _printf
 Release下:

     _main proc near
     push    3
     push    offset aNvaroneD ; "nVarOne = %d\r\n"
     call    sub_403A91          ;printf
     add     esp, 8
     xor     eax, eax
     retn
     _main endp

关于编译器的优化: 常量传播和常量折叠
常量传播: 编译器常常将编译期间可以计算出结果的变量转换成常量
常量折叠:对于常量表达式 编译器会在编译期间就计算出等式结果并予以替换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值