话说noip不开优化,那咱们来看看开优化后会发生什么ios
一个简单的累加app
#include<cstdio> #include<ctime> //计时看看差异 #include<iostream> using namespace std; int main() { int n=1000000000; int tn=n/2; clock_t a,b; a=clock(); int sum=0; //通常的累加 for(int i=0;i<=n;i++) sum+=i; printf("%d\n",b=clock()-a);//用时1 int sum1=0,sum2=0; //神奇的累加 循环展开+多路并行 for(int i=0;i<=tn;i++) sum+=i<<1,sum+=i<<1&1; printf("%d",clock()-b);//用时2 return 0; }
按理来讲,上面的两种方法差很少(???)工具
在DEVC++ 5.7.1中,xp系统(学校机房的那种)优化
不开任何优化 大约前一种是8500ms+,后一种是4000ms+spa
开-O1 1300ms+ 600ms+ //优化级别 lowcode
开-O2 以上 0 0 //low以上blog
怎么回事呢?ip
这个快一倍的缘由在csapp第五章是有的,get
缘由是cpu整数加法运算器有多个,编译器
而同一个时间能够最多运算两个整数加法,
经过这种方法能够增长流水线吞吐量。
实际上,编译器会在第二次隐式汇编优化时候作这个优化,
若是你把gcc开到o3以上的优化程度就能够自动在汇编指令层级变成这种形式
咋开优化?
DEVC++工具栏-》工具-》编译选项-》编译器-》编译时加入如下命令-》键入-O2-》
-》代码生成优化-》代码生成-》优化级别
noip2017 rp++