Keil:函数级优化技巧全解

目录

一、Keil 优化设置的核心方法

1. 全局优化等级设置(基础)

2. 函数级单独优化(核心)

方式 1:使用 __attribute__ 关键字(推荐,通用)

方式 2:使用 #pragma 指令(局部生效)

3. 特殊场景:禁止函数内联(优化相关)

二、关键注意事项

总结

在 Keil MDK 开发环境中,如何针对函数级别进行代码优化的设置方法,这是嵌入式开发中非常关键的一项配置,能有效平衡代码的大小、执行效率和调试便利性。

一、Keil 优化设置的核心方法

Keil 的优化设置分为全局优化函数级单独优化,后者可以让你为特定函数设置不同于全局的优化等级,这在调试关键函数或追求特定函数性能时特别有用。

1. 全局优化等级设置(基础)

首先介绍全局优化的设置,这是所有函数的默认优化等级:

  1. 打开 Keil 工程,点击魔法棒图标(Options for Target)。
  2. 切换到Optimization标签页:
    • Optimization Level:选择全局优化等级(0~3、-Otime、-Ospace),含义如下:
      • O0:无优化(调试最友好,代码最大、最慢)。
      • O1:基础优化(平衡调试和性能)。
      • O2:默认优化(推荐,兼顾性能和代码大小)。
      • O3:最高优化(性能最优,但可能增加代码大小,调试难度大)。
      • -Otime:优先优化执行速度。
      • -Ospace:优先优化代码大小。
    • Other Controls:可输入额外的编译器优化参数(高级用法)。
2. 函数级单独优化(核心)

如果想让某个函数不受全局优化影响,可通过编译器属性指令为函数单独设置优化等级,有两种常用方式:

方式 1:使用__attribute__关键字(推荐,通用)

在函数定义 / 声明前添加属性,格式:

// 格式:__attribute__((optimize("优化等级"))) // 示例1:强制某个函数无优化(O0),方便调试 __attribute__((optimize("O0"))) void Debug_Func(void) { // 该函数不受全局优化影响,始终为O0 uint32_t temp = 0; for(int i=0; i<100; i++){ temp += i; } } // 示例2:强制某个函数最高优化(O3),追求性能 __attribute__((optimize("O3"))) uint32_t Fast_Calc(uint32_t a, uint32_t b) { return (a * b) + (a / b); // 执行效率优先 } // 示例3:优先优化代码大小(-Ospace) __attribute__((optimize("-Ospace"))) void Small_Code_Func(void) { // 代码大小优先 }
方式 2:使用#pragma指令(局部生效)

适用于多个连续函数的优化设置:

// 开始设置优化等级为O0 #pragma push #pragma optimize=0 void Func1(void) { // 该函数为O0优化 } void Func2(void) { // 该函数也为O0优化 } // 恢复之前的全局优化等级 #pragma pop void Func3(void) { // 该函数使用全局优化等级 }
3. 特殊场景:禁止函数内联(优化相关)

优化等级较高时,编译器可能自动内联小函数,若想禁止:

// 禁止该函数被内联 __attribute__((noinline)) void No_Inline_Func(void) { // 函数逻辑 } // 强制该函数内联(即使全局优化不允许) __attribute__((always_inline)) static inline void Force_Inline_Func(void) { // 函数逻辑 }

二、关键注意事项

  1. 调试兼容性O2/O3优化等级下,编译器会重排代码、删除未使用变量,导致调试时变量值无法查看、断点错位,建议调试阶段全局设为O0,仅对性能关键函数设高优化。
  2. 编译器版本:上述属性指令适用于 Keil 的 ARMCC 编译器(V5 及以上),若使用 ARMCLANG(V6),语法基本兼容,但部分参数略有差异。
  3. 代码正确性:高优化等级可能暴露代码隐患(如未加volatile的寄存器变量被优化),需确保代码符合编译器规范。

总结

  1. Keil 优化分全局(工程选项)和函数级(__attribute__/#pragma),优先通过全局设置基础等级,再为特殊函数单独调整。
  2. 调试阶段建议全局设O0,发布阶段可设O2,并为性能关键函数设O3/-Otime,为存储紧张的函数设-Ospace
  3. 高优化等级需注意调试兼容性和代码正确性,必要时使用noinline/volatile等关键字规避问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1189593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

拉萨市英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜2026 - 老周说教育

依托英国文化教育协会(BC雅思)2026年1月最新发布的《2024-2025中国大陆雅思考生成绩大数据报告》核心指标,经西藏自治区教育厅教学资质联合核验,结合拉萨市城关区、堆龙德庆区、达孜区、曲水县、墨竹工卡县6800份考…

HLS第一个入门工程(简单加法器)

目标:实现一个“输入两个整数、输出其和”的加法器模块,完整走通HLS开发的核心流程(工程创建→代码编写→C仿真→HLS综合→查看RTL结果),理解每一步的目的。 步骤1:创建HLS工程(Vitis HLS 2022.1,Windows为例)…

合规审计日志场景:企业网盘测评日志功能对比 - 速递信息

本次测评将涵盖以下9款产品:够快云库、Microsoft OneDrive for Business、Dropbox Business、联想企业网盘(联想Filez)、360亿方云、燕麦云、坚果云、Box、Google Drive(Google Workspace)。在企业数字化转型日益…

探寻耐酸碱流量计优质厂家,2026年哪些品牌值得信赖,液体涡轮流量计/超声波液位计,耐酸碱流量计供应厂家哪里有卖 - 品牌推荐师

在工业生产流程中,耐酸碱流量计作为精准测量腐蚀性介质流量的核心设备,其性能直接关乎工艺稳定性与生产安全。随着化工、制药、环保等行业对耐腐蚀、抗干扰、高精度测量需求的持续增长,如何从众多品牌中筛选出技术可…

格力产品质量怎么样?专业测评揭示三大核心产品真实性能表现 - 速递信息

从60℃火焰山到-30℃东极,格力为何"自讨苦吃"?格力作为成立于1991年的多元化家电制造企业,拥有超过135290项专利和50项"国际领先"技术,产品远销190多个国家和地区,服务超6亿用户。通过对格力…

弗劳恩霍夫IAPT方案

&#x1f393;作者简介&#xff1a;科技自媒体优质创作者 &#x1f310;个人主页&#xff1a;莱歌数字-CSDN博客 &#x1f48c;公众号&#xff1a;莱歌数字&#xff08;B站同名&#xff09; &#x1f4f1;个人微信&#xff1a;yanshanYH 211、985硕士&#xff0c;从业16年 从…

2026同安靠谱装修公司推荐|避坑三大痛点,预算/设计/整装全匹配 - 品牌测评鉴赏家

2026同安靠谱装修公司推荐|避坑三大痛点,预算/设计/整装全匹配一、引言:同安装修市场现状与业主核心痛点 在厦门 “跨岛发展” 战略的持续推进下,同安区一跃成为城市建设的热土。中国家装行业发展白皮书数据显示,…

2026年1月钢结构厂房机构行业推荐 - 2026年企业推荐榜

转载自:https://www.remenpp.com/rankinglis/284081.html 文章摘要 钢结构厂房行业在2026年1月至2025年12月期间持续发展,模块化建筑和绿色技术成为趋势。本文推荐五家优秀机构,榜单基于综合评估,排名不分先后,旨…

学霸同款2026继续教育AI论文平台TOP10:选对工具轻松写毕业论文

学霸同款2026继续教育AI论文平台TOP10&#xff1a;选对工具轻松写毕业论文 2026年继续教育AI论文平台测评&#xff1a;选对工具&#xff0c;让毕业论文更高效 随着继续教育领域的不断发展&#xff0c;越来越多的学员需要撰写高质量的毕业论文。然而&#xff0c;面对繁重的工作…

基于springboot系统,如何跟踪会话过期,浏览器会话标识是否收到正常响应,存储,并在后续请求保持携带

今天我们分享一个项目开发中的出现操作某个业务时候,出现闪退的经典问题,针对老旧的Spring MVC系统,要系统性地跟踪会话(Session)生命周期和Cookie的携带情况,我们需要一套清晰的、从浏览器到服务器的排查方案。…

2026振荡器厂家实测:权威品牌/制造企业/高端型号全梳理 - 品牌推荐大师1

在2026年实验室设备升级浪潮中,振荡器作为基础但关键的通用仪器,其性能直接关系到实验数据的重复性与可靠性。为帮助科研用户精准选型,我们对当前市场主流及小众振荡器品牌进行了多维度实测评估,涵盖温度控制精度、…

你真的理解 ASP.NET Core 的中间件吗?搞懂它只需要这一篇

在 ASP.NET Core 的设计中&#xff0c;高性能、高灵活性和模块化并不是偶然结果&#xff0c;而是源于一套非常清晰的架构理念。其中&#xff0c;中间件&#xff08;Middleware&#xff09;是整个 Web 框架的核心基础设施之一。每一个 HTTP 请求&#xff0c;从进入应用到返回响应…

NMN怎么买?NMN怎么吃效果最好?2026年NMN抗衰产品十大品牌排名 - 速递信息

随着细胞抗衰理念深入人心,NMN已成为不少人日常抗衰的核心选择,但“怎么买不踩坑”“怎么吃效果最大化”却成了普遍难题。市面上NMN品牌繁杂,抗衰效果参差不齐,有的仅能短暂缓解疲劳,有的却能从细胞层面延缓老化。…

东营社保代缴哪家强?权威十大机构实测:合规、价格、服务三重维度深度拆解 - 速递信息

在营商环境持续优化的东营,从蓬勃发展的中小企业到布局全国的集团企业,规范处理员工社保公积金已成为企业合规运营的基石。然而,繁杂的地方政策、高频的基数调整、严格的稽核审查,让众多企业HR疲于应对。选择一家专…

AI驱动视角下:白银十年涨幅491%的量化归因——基于多模态数据融合与强化学习的市场演变分析

摘要&#xff1a;本文通过构建LSTM-GRU混合时间序列预测模型&#xff0c;结合PCA主成分分析与LDA主题模型对全球白银市场十年数据&#xff08;2016-2026&#xff09;进行深度挖掘&#xff0c;分析白银价格从15美元/盎司飙升至94美元/盎司的驱动机制&#xff0c;揭示光伏产业需求…

厦门别墅装修公司哪家强?2026精选榜单+避坑指南奉上 - 品牌测评鉴赏家

厦门别墅装修公司哪家强?2026精选榜单+避坑指南奉上一、开篇:厦门别墅装修别踩坑!选对专业公司是核心 1.1 厦门别墅装修市场现状:痛点与需求并存 在厦门这座充满浪漫与艺术气息的海滨城市,别墅作为高品质生活的象…

2026 合金精致钢厂家权威推荐榜单:直角精致钢/90度尖角精致钢/精密焊接精致钢/90度精致钢/冷弯精致钢源头厂家精选。

在建筑幕墙、**装饰及工业结构领域,精致钢型材因其高强度、耐腐蚀及美观性成为关键材料。随着市场对定制化、高性能产品的需求增长,天津舜辰精致钢智能制造有限公司凭借其技术积累与产品矩阵,成为行业备受关注的供应…

自学成为网络安全工程师:2026最新知识体系与实战学习路径解析

【2025网络安全趋势】从小白到专家&#xff1a;网安工程师入行指南&#xff08;建议收藏&#xff09; 文章详述2025年网络安全工程师入行路径&#xff0c;涵盖三大核心职责方向、需求薪资前景及权威认证报考指南。数据显示网安岗位需求年增37%&#xff0c;薪资上限高&#xff…

2026 功效牙膏厂家权威推荐榜单:中草药牙膏/功效牙膏/护龈牙膏/无刺激牙膏/牙龈出血牙膏源头厂家精选。

我国口腔健康问题中,受口腔溃疡与牙龈敏感影响的人群已达3亿,其中因牙龈肿痛、出血等问题就医的年就诊量超过1.2亿次。这些数据背后,是日常护理需求与专业解决方案之间的巨大缺口。连芩珍珠牙膏研发团队基于临床经验…