下面是我给的一个终极优化代码(c++):
点我(GCC板块)
点我(G++板块)
这个优化代码长度为94行,分为两部分:GCC与G++;
其中GCC与G++的两部分除了GCC与G++的区别外完全重合;
下面给这其中一段打上注释:
#pragma GCC optimize(1)//o1优化
#pragma GCC optimize(2)//o2优化
#pragma GCC optimize(3)//03优化
#pragma GCC optimize("Ofast")//ofast优化
#pragma GCC optimize("inline")//inline中和
#pragma GCC optimize("-fgcse")//fgcse优化
#pragma GCC optimize("-fgcse-lm")//-fgcse-lm
#pragma GCC optimize("-fipa-sra")//除换
#pragma GCC optimize("-ftree-pre")//快速tree
#pragma GCC optimize("-ftree-vrp")//去重tree
#pragma GCC optimize("-fpeephole2")//flatco2优化
#pragma GCC optimize("-ffast-math")//数论优化
#pragma GCC optimize("-fsched-spec")//富硒优化
#pragma GCC optimize("unroll-loops")//图论plus优化
#pragma GCC optimize("-falign-jumps")//极优化
#pragma GCC optimize("-falign-loops")//图论重+排除
#pragma GCC optimize("-falign-labels")//lamb优化
#pragma GCC optimize("-fdevirtualize")//fugechar优化
#pragma GCC optimize("-fcaller-saves")//负优化排除
#pragma GCC optimize("-fcrossjumping")//极优化p+
#pragma GCC optimize("-fthread-jumps")//多重极优化
#pragma GCC optimize("-funroll-loops")//天花板算法优化
#pragma GCC optimize("-fwhole-program")//弗洛伊德优化
#pragma GCC optimize("-freorder-blocks")//半刻优化
#pragma GCC optimize("-fschedule-insns")//fschedule-insns优化
#pragma GCC optimize("inline-functions")//inline-functions优化
#pragma GCC optimize("-ftree-tail-merge")//-ftree-tail-merge优化
#pragma GCC optimize("-fschedule-insns2")//-fschedule-insns2优化
#pragma GCC optimize("-fstrict-aliasing")//-fstrict-aliasing优化
1.其中有些有特殊含义,单独存在,like:O1\O2\O3\OFAST等等,但是有有些事辅佐优化,像(我打圈圈的):查看图片请点我
2、注释是通用的,也只是把后面("")中的内容写一遍,给大家一个实际的优化例子,用一道题来证明(我打圈的地方是耗时):
不开优化:
图片传送门
只开O1,O2,O3:
图片传送门
只开GCC优化:
图片传送门
只开G++优化: