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循环的执行效率最高,适用于简单和通用的循环场景

相关推荐
j7~1 小时前
【C++ 八股文】(篇四)C++11 新特性
开发语言·c++·面试·c++11·八股文
eggwyw1 小时前
C++中大括号的用法合集
开发语言·c++
xiaoye-duck1 小时前
《C++ 项目:手写大模型接入 SDK》本地 Ollama 部署与适配
开发语言·网络·c++·语言模型
§ꦿCFོ༉1 小时前
嵌入式八股文—C语言入门学习(二)
c语言·学习·嵌入式·编程语言
联犀1 小时前
联犀 Go SIMD 实战:视频转码从 16.5ms 到 5.46ms
开发语言·golang·音视频
octopus_c2 小时前
STL 之 string:auto 与范围 for、常用接口、模拟实现与深浅拷贝
开发语言·c++·算法
Nerd(BUG版)2 小时前
KMP学习day5--Kotlin Flow异步流基础
开发语言·学习·kotlin
J.YA2 小时前
String字符串[面试题]
java·开发语言
FungLeo2 小时前
成为全栈·基础补充·Web 安全基础:XSS、CSRF 与 SQL 注入
web安全·网络安全·xss·csrf·sql注入·成为全栈
David猪大卫11 小时前
【Linux修炼】环境变量、进程地址空间
linux·c语言·经验分享·笔记·学习·ubuntu·centos