C 循环结构的执行效率分析

c 复制代码
    int i = 0;
00007FF60510185C  mov         dword ptr [i],0  
    while (i <= 10){
00007FF605101863  cmp         dword ptr [i],0Ah  
00007FF605101867  jg          main+43h (07FF605101883h)  
        printf("%d ", i);
00007FF605101869  mov         edx,dword ptr [i]  
00007FF60510186C  lea         rcx,[string "%d " (07FF605109C24h)]  
00007FF605101873  call        printf (07FF605101253h)  
00007FF605101878  nop  
        i++;
00007FF605101879  mov         eax,dword ptr [i]  
00007FF60510187C  inc         eax  
00007FF60510187E  mov         dword ptr [i],eax  
    }
00007FF605101881  jmp         main+23h (07FF605101863h)  
    i = 0;
00007FF605101883  mov         dword ptr [i],0  
    do {
        printf("%d ", i);
00007FF60510188A  mov         edx,dword ptr [i]  
00007FF60510188D  lea         rcx,[string "%d " (07FF605109C24h)]  
00007FF605101894  call        printf (07FF605101253h)  
00007FF605101899  nop  
        i++;
00007FF60510189A  mov         eax,dword ptr [i]  
00007FF60510189D  inc         eax  
00007FF60510189F  mov         dword ptr [i],eax  

    } while (i <= 10);
00007FF6051018A2  cmp         dword ptr [i],0Ah  
00007FF6051018A6  jle         main+4Ah (07FF60510188Ah)  
    for (i = 0;i <= 10;i++) {
00007FF6051018A8  mov         dword ptr [i],0  
00007FF6051018AF  jmp         main+79h (07FF6051018B9h)  
00007FF6051018B1  mov         eax,dword ptr [i]  
00007FF6051018B4  inc         eax  
00007FF6051018B6  mov         dword ptr [i],eax  
00007FF6051018B9  cmp         dword ptr [i],0Ah  
00007FF6051018BD  jg          main+91h (07FF6051018D1h)  
        printf("%d ", i);
00007FF6051018BF  mov         edx,dword ptr [i]  
00007FF6051018C2  lea         rcx,[string "%d " (07FF605109C24h)]  
00007FF6051018C9  call        printf (07FF605101253h)  
00007FF6051018CE  nop  
    }
00007FF6051018CF  jmp         main+71h (07FF6051018B1h)  

循环效率的比较

1.从反汇编代码的行数来看,for循环最慢,while循环和do-while循环较快

2.while循环和do-while循环在结构上较为清晰,执行速度较快

3.do-while循环的执行效率最高,适用于简单和通用的循环场景

相关推荐
小坏讲微服务1 小时前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4
打工仔折腾 AI3 小时前
用 Dashlet 把极空间 NAS 服务入口整理成统一导航首页的实践
java·开发语言·人工智能·后端·python·rpc·ai agent 实战
MATLAB代码顾问3 小时前
Simulink PI 参数扫描与批量仿真完整 MATLAB 代码
开发语言·matlab
Want5953 小时前
Python跳动的爱心②
开发语言·python·数学建模
Navigator_Z4 小时前
LeetCode //C - 1293. Shortest Path in a Grid with Obstacles Elimination
c语言·算法·leetcode
小羊没烦恼!4 小时前
T-SQL查询进阶--理解SQL SERVER中的分区表
服务器·开发语言·前端·javascript·html
爱吃香菜的初学者5 小时前
十六.Linux——多线程(2)
linux·运维·开发语言
jeo陽5 小时前
04-循环实战:素数、最大公约数、级数求和与枚举法
c语言·开发语言·数据结构
暖核5 小时前
kubeadm 集群运维:Worker 节点下线删除、整套集群销毁重建指南
运维·开发语言·php