一点关于编译器不同优化级别的比较
来源:互联网 发布:php sleep 和 usleep 编辑:程序博客网 时间:2024/04/20 17:03
实验目的
在编程语言中,对比不同编程风格的代码写法,或者通过使用不同的编译器和编译优化参数,通过编译器生成汇编代码,静态分析所生成汇编代码的运行效率。
实验平台、工具
在Windows平台下,采用VC6.0工具。
实验设计
相同编译器不同优化级别对冗余代码的优化对比。
int main()
{
int a=0;
int b=1;
int c=2;
int d=3;
int e=4;
c=a+b;
return c;
}
以下是无优化下生成的汇编及代码整合
_main PROC NEAR ; COMDAT
; 4 : {
pushebp
movebp, esp
subesp, 84; 00000054H
pushebx
pushesi
pushedi
leaedi, DWORD PTR [ebp-84]
movecx, 21; 00000015H
moveax, -858993460; ccccccccH
rep stosd
; 5 : int a=0;
movDWORD PTR _a$[ebp], 0
; 6 : int b=1;
movDWORD PTR _b$[ebp], 1
; 7 : int c=2;
movDWORD PTR _c$[ebp], 2
; 8 : int d=3;
movDWORD PTR _d$[ebp], 3
; 9 : int e=4;
movDWORD PTR _e$[ebp], 4
; 10 : c=a+b;
moveax, DWORD PTR _a$[ebp]
addeax, DWORD PTR _b$[ebp]
movDWORD PTR _c$[ebp], eax
; 11 : return c;
moveax, DWORD PTR _c$[ebp]
; 12 :
; 13 : }
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0
_main ENDP
}
以下是release优化级别的代码及汇编
_main PROC NEAR ; COMDAT
; 5 : int a=0;
; 6 : int b=1;
; 7 : int c=2;
; 8 : int d=3;
; 9 : int e=4;
; 10 : c=a+b;
; 11 : return c;
moveax, 1
; 12 :
; 13 : }
ret 0
_main ENDP
- 一点关于编译器不同优化级别的比较
- 编译器级别的代码优化对比
- 编译器级别的代码优化对比
- 发现VC编译器和gcc编译器的一点不同
- C++ 编译器优化比较
- gcc不同优化级别反汇编代码的分析
- 关于copy constructor的编译器优化
- 关于String常量的编译器优化
- 一点忙也帮不上的编译器
- 关于前端的优化的一点感受
- innodb存储引擎中不同sql在不同隔离级别下锁的比较
- 关于SQL优化的一点心得
- 关于优化的一点小总结
- 关于SQL优化的一点感想
- 关于性能优化的一点总结
- 关于网站速度优化的一点建议
- 关于sql优化的一点见解
- 关于vue.js项目的一点优化
- #include<list>
- Session和作用域
- STM32F103 输入捕获
- 预编译命令中的#号的作用
- 开放定址法演示
- 一点关于编译器不同优化级别的比较
- MAC下编译PHP5.5.7问题:configure: error: freetype.h not found.
- 黑马程序员-day02-Java基础语法
- 新建项目总是产生一个appcompat_v7和fragment_main.xml
- redis 清空
- 不用Cygwin,不用命令行,Eclipse编译NDK
- 高考战争在即 错在谁?
- ORACLE REDO--《深入浅出ORACLE第六章》
- 黑马程序员-day03-Java基础语法(函数)