HMI-19-[Qt Release深度优化编译]开启-O优化编译

举报
DreamLife 发表于 2022/04/15 01:00:20 2022/04/15
【摘要】 基于Qt的汽车仪表模拟 最近我的小程序出现了点问题,就是在开发机上好好,移到我的笔记本上编译出来的程序就会有问题,好烦人呀,尝试开启深度优化编译, 参考资料 C++手动开启O2优化(以及-O -O1 -O2 -O3优化的知识点)(竞赛可用)_xuanweiace的博客-CSDN博客_o3优化 QtCreator开启-O...

基于Qt的汽车仪表模拟

最近我的小程序出现了点问题,就是在开发机上好好,移到我的笔记本上编译出来的程序就会有问题,好烦人呀,尝试开启深度优化编译,

参考资料

C++手动开启O2优化(以及-O -O1 -O2 -O3优化的知识点)(竞赛可用)_xuanweiace的博客-CSDN博客_o3优化

QtCreator开启-O编译优化的方式_Erick Lv的笔记-CSDN博客_qt 编译优化

QtCreator编译速度慢解决方法_weenxin的专栏-CSDN博客_qt编译慢

这搬用一步分

首先,编译优化必须是在Release模式下进行,保证程序没有任何bug的条件下进行执行。编译优化能极大提升程序的运行效率,级别越高速度越快,但是对代码健壮性要求也越高!

选择编译release模式,在pro文件根据优化的需要添加下面的语句:

QMAKE_CXXFLAGS_RELEASE += -O        # Release -O
QMAKE_CXXFLAGS_RELEASE += -O1       # Release -O1
QMAKE_CXXFLAGS_RELEASE += -O2       # Release -O2
QMAKE_CXXFLAGS_RELEASE += -O3       # Release -O3

上述语句根据需要优化的级别,任选一个添加即可

O1优化会消耗少多的编译时间,它主要对代码的分支,常量以及表达式等进行优化。 

O2会尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存和编译时间。 

O3在O2的基础上进行更多的优化,例如使用伪寄存器网络,普通函数的内联,以及针对循环的更多优化。 

Os主要是对代码大小的优化,我们基本不用做更多的关心。 通常各种优化都会打乱程序的结构,让调试工作变得无从着手。并且会打乱执行顺序,依赖内存操作顺序的程序需要做相关处理才能确保程序的正确性。  

-O0: 不做任何优化,这是默认的编译选项。

-O和-O1: 对程序做部分编译优化,对于大函数,优化编译占用稍微多的时间和相当大的内存。使用本项优化,编译器会尝试减小生成代码的尺寸,以及缩短执行时间,但并不执行需要占用大量编译时间的优化。 打开的优化选项:

O2优化能使程序的编译效率大大提升。

从而减少程序的运行时间,达到优化的效果。

C++程序中的O2开关如下所示:

#pragma GCC optimize(2)

同理O1、O3优化只需修改括号中的数即可。

只需将这句话放到程序的开头即可打开O2优化开关。

开启O3优化:

#pragma GCC optimize(3,"Ofast","inline")

那么在我的程序里了,知足要在我的pro文件中添加如下代码就可以了

QMAKE_CXXFLAGS_RELEASE += -O3       #开启深度优化O3

不过开启了这个深度优化的问题,还是没有解决我的小程序的实际问题,不开心

 2019/08/26 17:33

说明:

本项目中所使借鉴原型来自:[吉利] 博瑞GE | 仪表HMI设计吉利汽车HMI项目

设计图的所有权和解释权都归吉利汽车所有。

本项目所有资源文件均有打不死的小海复刻制作。

本项目代码暂时不会开源,有需要的源码的可与我联系,左上角二维码加微信。

本项目仅限学习交流、禁止商业使用。

​​​​​​​

文章来源: dreamlife.blog.csdn.net,作者:DreamLife.,版权归原作者所有,如需转载,请联系作者。

原文链接:dreamlife.blog.csdn.net/article/details/101363302

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。