• 3115阅读
  • 4回复

Qt debug和release模式问题 [复制链接]

上一主题 下一主题
离线songhuirong1
 

只看楼主 倒序阅读 楼主  发表于: 2017-07-30
测试了一段代码的执行效率,代码如下:
  1. QElapsedTimer et;
  2.     et.start();
  3.     long sum = 0;
  4.     for(long i = 0; i <= 1000000000000; ++i)
  5.     {
  6.         sum += i;
  7.     }
  8.     qDebug() << Q_FUNC_INFO << "Elapsed:" << et.elapsed();
  9.     qDebug() << Q_FUNC_INFO << "sum =" << sum;
发现在debug模式下运行速度非常慢,需要几个小时,但是如果在release模式下运行的话,不到1ms就完成了。为什么差距会这么大?望高人指点。
离线songhuirong1

只看该作者 1楼 发表于: 2017-08-01
高人呢
离线dbzhang800

只看该作者 2楼 发表于: 2017-08-01
这和人一样,你让一个刚学会加法的小学生和一个高中生,分别计算 0+1+2+3+...+99 的结果是多少。正常来说,所用的时间差别肯定非常大。当然,你可以让高中生挨个数进行累加,但默认应该都不会这么干。

同样,你在release模式下编译程序时,你也可以关掉优化选项,让它老老实实执行这么多次加法和循环。
离线songhuirong1

只看该作者 3楼 发表于: 2017-08-02
回 dbzhang800 的帖子
dbzhang800:这和人一样,你让一个刚学会加法的小学生和一个高中生,分别计算 0+1+2+3+...+99 的结果是多少。正常来说,所用的时间差别肯定非常大。当然,你可以让高中生挨个数进行累加,但默认应该都不会这么干。
同样,你在release模式下编译程序时,你也可以关掉优化选项,让它老老实实执 .. (2017-08-01 13:02) 

我们平常所说的程序执行效率,指的是优化后的,还是没有优化过的?
离线dosmlp

只看该作者 4楼 发表于: 2017-08-03
编译器在debug模式下会严格按照代码写的进行编译,release模式则会进行代码优化
快速回复
限100 字节
 
上一个 下一个