欢迎来到天天文库
浏览记录
ID:59156840
大小:53.50 KB
页数:8页
时间:2020-09-15
《【C语言】while与for执行效率的比较.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、【C语言】while与for执行效率对比QQ C语言编译环境:MicrosoftVisualC++6.0(SP6) 测试程序 C代码1.#include "stdio.h" 2. 3.void forTest() 4.{ 5. int num = 1234; // 迭代次数 6. long sum = 0; // 保存加法结果 7. 8. for(int i=0;i2、0. sum = sum + i; // 计算结果 11. } 12. 13. printf("forTest:%d",sum); 14.} 15. 16.void whileTest() 17.{ 18. int num = 1234; // 迭代次数 19. long sum = 0; // 保存加法结果 20. 21. while((num--)>0) 22. { 233、. sum = sum + num; // 计算结果 24. } 25. 26. printf("whileTest:%d",sum); 27.} 1. 2. 3.void main() 4.{ 5. forTest(); 6. whileTest(); 7.} 汇编片段whileTest()函数汇编后的指令:---D:VCForWhileForWhile.cpp -------------------------------------------4、----------------------------------------------- 汇编指令代码 1.17: void whileTest() 2.18: { 3.0040D760 push ebp 4.0040D761 mov ebp,esp 5.0040D763 sub esp,48h 6.0040D766 push ebx 7.0040D767 push esi 8.0040D768 push e5、di 9.0040D769 lea edi,[ebp-48h] 10.0040D76C mov ecx,12h 11.0040D771 mov eax,0CCCCCCCCh 12.0040D776 rep stos dword ptr [edi] 13.19: int num = 1234; 14.0040D778 mov dword ptr [ebp-4],4D2h 15.20: long sum = 0; 16.06、040D77F mov dword ptr [ebp-8],0 17.21: 18.22: while((num--)>0) 19.0040D786 mov eax,dword ptr [ebp-4] 1.0040D789 mov ecx,dword ptr [ebp-4] 2.0040D78C sub ecx,1 3.0040D78F mov dword ptr [ebp-4],ecx 4.0040D792 test7、 eax,eax 5.0040D794 jle whileTest+41h (0040d7a1) 6.23: { 7.24: sum = sum + num; 8.0040D796 mov edx,dword ptr [ebp-8] 9.0040D799 add edx,dword ptr [ebp-4] 10.0040D79C mov dword ptr [ebp-8],edx 11.25: }8、 12.0040D79F jmp whileTest+26h (0040d786) 13.26: 14.27:
2、0. sum = sum + i; // 计算结果 11. } 12. 13. printf("forTest:%d",sum); 14.} 15. 16.void whileTest() 17.{ 18. int num = 1234; // 迭代次数 19. long sum = 0; // 保存加法结果 20. 21. while((num--)>0) 22. { 23
3、. sum = sum + num; // 计算结果 24. } 25. 26. printf("whileTest:%d",sum); 27.} 1. 2. 3.void main() 4.{ 5. forTest(); 6. whileTest(); 7.} 汇编片段whileTest()函数汇编后的指令:---D:VCForWhileForWhile.cpp -------------------------------------------
4、----------------------------------------------- 汇编指令代码 1.17: void whileTest() 2.18: { 3.0040D760 push ebp 4.0040D761 mov ebp,esp 5.0040D763 sub esp,48h 6.0040D766 push ebx 7.0040D767 push esi 8.0040D768 push e
5、di 9.0040D769 lea edi,[ebp-48h] 10.0040D76C mov ecx,12h 11.0040D771 mov eax,0CCCCCCCCh 12.0040D776 rep stos dword ptr [edi] 13.19: int num = 1234; 14.0040D778 mov dword ptr [ebp-4],4D2h 15.20: long sum = 0; 16.0
6、040D77F mov dword ptr [ebp-8],0 17.21: 18.22: while((num--)>0) 19.0040D786 mov eax,dword ptr [ebp-4] 1.0040D789 mov ecx,dword ptr [ebp-4] 2.0040D78C sub ecx,1 3.0040D78F mov dword ptr [ebp-4],ecx 4.0040D792 test
7、 eax,eax 5.0040D794 jle whileTest+41h (0040d7a1) 6.23: { 7.24: sum = sum + num; 8.0040D796 mov edx,dword ptr [ebp-8] 9.0040D799 add edx,dword ptr [ebp-4] 10.0040D79C mov dword ptr [ebp-8],edx 11.25: }
8、 12.0040D79F jmp whileTest+26h (0040d786) 13.26: 14.27:
此文档下载收益归作者所有