如何提高keil mdk的编译速度

测试汇总如下,编译环境:CPU i7-7500U 双核四线程。

 

1、keil4

一般编译:用时 26.5s

关闭调试信息:用时 16.5s

关闭调试信息,关闭杀软:用时 7.5s

keil4不支持多线程编译,在工程设置中关闭 debug information 和 cross reference 会显著加快编译速度,但是这样就不支持在调试时右键跳转到定义。另外有些杀毒软件(比如360...)会扫描文件,拖慢编译速度30%以上。

 

2、keil5

一般编译:用时 14s

关闭调试信息:用时 10s

关闭调试信息,关闭杀软:用时 4.5s

keil5支持多线程编译,并且默认打开(configuration->other),在多核CPU机器上会大幅度提高编译速度。

 

 

最后在尝试在16核32线程的服务器上编译了一下,keil5关闭调试信息和杀软:用时 1s...

 

<think>嗯,用户想了解如何在Keil MDK中进行编译优化,特别是关于OSBalance参数的设置。首先,我需要回忆一下Keil MDK编译优化选项。记得在Keil中,优化设置位于“Options for Target” -> “C/C++”选项卡下的“Optimization”部分。这里有不同优化等级,比如-O0到-O3,以及-Oz。OSBalance可能是一个特定的优化选项,可能和代码大小与执行速度的平衡有关。 接下来,用户提到的引用内容中,引用[3]提到Keil编译优化设置方法,说明优化选项可以调整代码速度和尺寸。这可能涉及到如何选择不同的优化等级,以及每个等级的具体影响。比如,-O0是不优化,适合调试;-O3是最高优化,可能增加代码速度但影响调试。而OSBalance可能是在某个优化等级下的子选项,需要具体查看。 然后,OSBalance参数可能需要更深入的了解。在ARM编译器中,可能有特定的编译选项或参数来控制优化策略,比如平衡代码大小和速度。例如,--opt_level=4 --split_sections,这样的参数可能帮助减少代码尺寸。OSBalance可能是在这里设置的某个参数,或者需要特定的编译指令。 还需要考虑用户是否在使用RT-Thread或其他实时操作系统,因为引用[2]提到了RT-Thread Studio和Keil MDK的不同编译环境。在OSBalance的上下文中,可能需要调整优化设置以适应操作系统的需求,比如任务调度或中断响应时间。 另外,用户可能遇到编译速度慢的问题,引用[1]提到编译速度慢的解决方法,这可能与优化选项有关,因为更高的优化等级可能导致更长的编译时间。因此,在配置OSBalance时,需要权衡优化效果和编译时间。 现在需要将这些信息整理成步骤,首先介绍优化等级,然后具体说明OSBalance相关设置,可能涉及编译器控制指令或特定选项。还要提到注意事项,比如调试与优化的平衡,以及如何验证优化效果。 最后,生成相关问题,可能涉及其他优化技巧、常见问题或与特定操作系统的结合使用。确保回答结构清晰,分步骤说明,并引用提供的参考资料。</think>### Keil MDK 编译优化及 OSBalance 参数配置指南 #### 一、编译优化基础设置 1. **优化等级选择** 在 Keil MDK 中,优化等级通过 `Options for Target` -> `C/C++` -> `Optimization` 设置。常用等级包括: - `-O0`:关闭优化,保留完整调试信息,适合开发阶段调试[^3]。 - `-O1`:基础优化,平衡代码尺寸和速度。 - `-O2`:较高优化,提升执行效率,可能增加代码体积。 - `-O3`:最高优化,侧重性能,但可能影响调试。 - `-Oz`:极致代码尺寸优化,适用于存储受限场景[^3]。 2. **优化目标控制** 通过 `Optimization` 栏的 `Focus on` 选项选择优化侧重: - `Balanced`:平衡代码尺寸与速度。 - `Favor speed`:优先执行效率。 - `Favor size`:优先减少代码体积。 #### 二、OSBalance 相关配置 **OSBalance** 是 RT-Thread 实时操作系统中用于任务负载均衡的模块,需结合编译优化确保其稳定性: 1. **代码优化与任务调度兼容性** - 避免使用 `-O3` 等激进优化,可能破坏任务切换的临界区保护(如关中断操作)。 - 推荐使用 `-O1` 或 `-O2` 并开启 `Optimize for Time`,兼顾效率与可靠性。 2. **关键函数优化豁免** 对 OSBalance 的核心函数(如任务调度器)添加 `__attribute__((optimize("O0")))`,强制关闭优化以保持逻辑正确性: ```c __attribute__((optimize("O0"))) void os_balance_scheduler(void) { // 任务调度逻辑 } ``` 3. **链接阶段优化(LTO)** 在 `Options for Target` -> `C/C++` 中勾选 `Link-Time Optimization`,全局优化跨文件代码,减少冗余指令,提升 OSBalance 调度效率[^3]。 #### 三、验证与调试 1. **反汇编检查** 通过 `Debug` 模式查看生成的汇编代码,确认关键函数(如中断服务例程)未被过度优化。 2. **性能监控** 使用 Keil MDK 的 `Event Viewer` 分析任务切换耗时,验证优化后 OSBalance 的响应效率。 #### 四、编译加速技巧 1. 关闭 `Browse Information` 生成功能。 2. 启用多核并行编译(`Options for Target` -> `Output` -> `Multi-threaded`)[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值