以下代码的运行结果时间不为0的可能原因有哪些
你可能运行在了debug下面,还用VS调试他,编译器没有把你的空循环删掉。
■网友
书上说的这种情况应该是优化过的,因为循环里没没做任何事情,运行时这段代码被忽略了。未经优化的情况下如果是1000次,是0的可能性还比较大。上百万肯定有一点延时的。可以这样考虑,CPU主频是1GHz,假设一周期跑一个循环,一百万次也需要1ms。DateTime.Ticks的单位是100ns,一万就是1ms,你看到十几万也很正常。从程序运行的角度看,DateTime.Now底层调用的是GetSystemTimeAsFileTime,这个函数会读取系统的时钟计数,这个计数是随时更新的,更新的间隔与硬件和系统设置有关。这个间隔可以用下面的代码测一下。startTime = DateTime.Now.Ticks;do{ endTime = DateTime.Now.Ticks;} while (startTime == endTime);Console.WriteLine("Interval:{0}", endTime - startTime);在我的机器上是10000,也就是1ms一次。当原来你代码中循环运行时间小于这个时间间隔的时候结果就是0,否则应该是其整数倍的一个值。
■网友
首先,第一,你不应该用DateTime.Now的差来计算而是应该用StopWatch才准确其次,你把Debug改成Release(或者按Ctrl+F5)再试试。
■网友
i \u0026lt;= RUN_NUMBER i++ 可能书上的编译器做了优化?循环里面没代码就不循环?但是你的编译器把上面语句跑了 RUN_NUMBER 次。
推荐阅读
- #医保云#备案报销手机搞定 看病买药“一码通行” 江苏医保云平台上线试运行
- 「降雪」目前江苏全省道路运行基本顺畅 降雪持续
- 京哈高铁北京至承德段进入运行试验阶段
- 「淮镇段」连淮扬镇铁路全线贯通在即 淮镇段再次试运行
- |受检样品全部为阴性 高新区冷链食品集中监管仓运行良好
- 孕妇|多半是贫血了,需尽早应对!孕妇身体出现以下4个异常
- 婴儿|美国儿科学会: 1岁以下婴儿不推荐学习游泳
- 怎样对别人的代码进行适当修改使他永远也找不到问题出在哪
- 笔记本在运行大型单机游戏时断开电源会造成啥伤害吗
- 网通社|喜欢TNGA架构平台的注意!新款丰田雷凌这回也有了 即日起就可以下订
