最近我的小程序出现了点问题,就是在开发机上好好,移到我的笔记本上编译出来的程序就会有问题,好烦人呀,尝试开启深度优化编译,
参考资料
https://blog.csdn.net/qq_41289920/article/details/82344586
https://blog.csdn.net/qq_35976351/article/details/82942407
https://blog.csdn.net/weenxin/article/details/44465665
这搬用一步分
首先,编译优化必须是在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
不过开启了这个深度优化的问题,还是没有解决我的小程序的实际问题,不开心