C++Ox开关

版权声明:转载请注明出处及原文链接,谢谢。 https://blog.csdn.net/jz_terry/article/details/79965247

使用说明:

· Ox开关是编译系统对所编程序的一种优化,在编译时就删去一些不必要的运行环节,可以使运行时间大幅度减少。

· Ox开关分为全局Ox和局部Ox,其中局部Ox似乎要比全局Ox高效。而每种Ox又分为O1、O2、O3三种,优化力度为O3最快,O2其次,O1最后。

注意事项:

· Ox开关只能在平时做题中(本机上、OJ上)使用,不能在正规比赛中使用,否则会被视为编译错误。

· 在调试程序时建议关闭Ox开关,因为开启后程序的某些执行顺序可能会因要最优化而被打乱,使调试难以执行。

全局Ox 

在整个程序前加上以下代码,表示整个程序都开启Ox 
O1
#pragma GCC optimize("O1")
#pragma G++ optimize("O1")

O2

#pragma GCC optimize("O2")
#pragma G++ optimize("O2")

O3

#pragma GCC optimize("O3")
#pragma G++ optimize("O3")

局部Ox (据说比全局Ox高效)
在(所有/某些)子程序前加上以下代码,表示该子程序开启Ox

O1 

__attribute__((optimize("-O1"))) 

O2 

__attribute__((optimize("-O2"))) 

O3 

__attribute__((optimize("-O3")))
阅读更多

无聊,闲话C++OX

10-13

哎呀,又要出标准了,看来这次又要加入不少东西,不知是否会让人满意rn前几天看到类似的帖子,好像是Wolf0403发的,说期待什么。rn似乎我比较贪心,因为比较喜欢范性,加上可以说C++0X主要加的是范性的支持,当然我有很多的期待,几乎各个都期待rn老了啊,没有时间好好研究:rnLMABDA ExpressionrnConcept checkingrn内存模型rn给和我一样的朋友稍微扫扫盲吧(初初初水准,冰山一角而已,由于没有时间,仅列几个例子)rn——————————————————————————————————rnforeach(start_of_an_iterator,end_of_an_iterator,_1=_1+2);rn这样就能对start_of_an_iterator到end_of_an_iterator里面每一个元素都+2rn汗吧!rn——————————————————————————————————rntemplaternT find_if(T start,T end,PRED _pred)rnrnwhile (start!=end && !(_pred(*start)) ++start;rnreturn start;rnrn典型的范性函数,要求T类型支持基本的迭代要求,支持!=作为两个引用的判断相等,支持++来向后迭代,并且支持*取实参,_pred支持以一个T的实参类型作为参数,并且返回一个BOOL性质的值rn所以find_if(1,2,less);语法没有问题,但是实体化时就炸了rn所以如何检查输入的类型是否是合法的,D&E里面说可以用FUNCTIONAL+CONDUCTOR CHECKINGrn我说可以用到BOOST::TYPE_TRAITS,所以我们需要一种即方便又有用又POWERFUL的“东西”rn这个就叫Concept Checking或者带有限制的类型参数检查(不好听)rn——————————————————————————————————rn统一内存模型就不说了,大家应该很清楚rnrn(手有点累了,暂时放下笔,(哪里有笔啊))呵呵开始挨批

没有更多推荐了,返回首页