none
release版本的问题 RRS feed

  • 问题

  • 我的程序在DEBUG下面加了一个无意义的FOR循环想让程序慢下来好使运算结果看起来比较明显,


      for(int k=0;k<10000;k++)                            //无意义操作,延长运行时间,增加可比性
       for(int l=0;l<20;l++); 

     

    在DEBUG下面还是慢的比较明显的,

    但是当我想在RELEASE下也作这一操作时,我知道RELEASE会快很多,所以我加大了FOR循环的次数,但是不知道为什么无论我加多少个FOR循环或者把FOR循环里的数改的多大,程序似乎不理睬它似的,该有多快还是有多快,请高手解释一下并给我个解决办法~谢谢!

    2008年5月4日 11:01

答案

  •  

    这个是因为debug时编译器是不做优化的,而release时编译器是做优化的,对于你这个无意义的行为是会被优化掉的:

    1:你可以在编译选项中把优化选项去掉。

    2:或者声明一个volatile的整型变量,在循环中做一个随便什么的处理,编译器不会优化掉volatile变量。

     

    不过对与你这样的浪费cpu时间的做法,我不是很赞同。

    2008年5月5日 2:41

全部回复

  •  

    哈,机器配置好啊,

    要延时,采用

    Thread.Sleep(300);
    就可以了;

    2008年5月4日 23:56
    版主
  • Sleep()行是行,但是我是想让CPU忙起来,而不是让它休眠啊,先谢过了

    2008年5月5日 1:30
  •  

    这个是因为debug时编译器是不做优化的,而release时编译器是做优化的,对于你这个无意义的行为是会被优化掉的:

    1:你可以在编译选项中把优化选项去掉。

    2:或者声明一个volatile的整型变量,在循环中做一个随便什么的处理,编译器不会优化掉volatile变量。

     

    不过对与你这样的浪费cpu时间的做法,我不是很赞同。

    2008年5月5日 2:41
  • RELEASE下做了很多优化,你可以在编译器上设置不优化。

    2008年5月5日 3:14
    版主
  • 用Sleep啊,你的语句其实很占用CPU时间,还不如用Sleep把这些CPU时间让给系统.

    2008年7月17日 4:07