问题描述
实测数据数据:(End-Start).TotalMilliseconds:16.0009(ms)Elapsed.Ticks:150868(Ticks)ElapsedTicks:47038(Ticks)ElapsedMilliseconds:15(ms)ElapsedTicks测出的时间明显比其他几个时间小
解决方案
解决方案二:
查了下;说ElapsedTicks只适合短时间的计时;但不知道短时间是指多短时间
解决方案三:
Stopwatchsw=newStopwatch();DateTimeStart=DateTime.Now;sw.Start();for(inti=0;i<60000000;i++){intii=1+2;}DateTimeEnd=DateTime.Now;sw.Stop();doubledsa=(End-Start).TotalMilliseconds;Response.Write("(End-Start).TotalMilliseconds:"+dsa.ToString()+"(ms)<br/>");Response.Write("Elapsed.Ticks:"+sw.Elapsed.Ticks+"(Ticks)<br/>");Response.Write("ElapsedTicks:"+sw.ElapsedTicks+"(Ticks)<br/>");Response.Write("ElapsedMilliseconds:"+sw.ElapsedMilliseconds+"(ms)<br/>");
解决方案四:
.Elapsed.TotalMilliseconds跟.Elapsed.Milliseconds是两个不同的概念,前者是指跑表计时结果换算为毫秒的值,而后者是指跑表计时结果中毫秒值(忽略了时、分、秒)。你说能一样吗?对于.Elapsed.Ticks跟.ElapsedTicks的区别,也是类似的。前者才是跑表计时的总时间,后者是一个“循环”改变的值(就好像1位10进制数字,从9以后就循环到0了)。因此后者根本是无意义的。
解决方案五:
.ElapsedMilliseconds跟.Elapsed.TotalMilliseconds基本上一致,只是一个是整数、另一个浮点数。但是从度量的对象上看,不论你写.ElapsedMilliseconds或者.Elapsed.TotalMilliseconds,它们跟.Elapsed.Ticks是针对相同的对象的。而.ElapsedTicks根本就是另外一个意思,并不是你要找的结果对象。
解决方案六:
如果Stopwatch.IsHighResolution==trueElapsed里的ticks会乘上一个tickFrequency,它的值是10000000.0/(double)Stopwatch.Frequency我也不知道为什么
解决方案七:
引用3楼sp1234的回复:
.Elapsed.TotalMilliseconds跟.Elapsed.Milliseconds是两个不同的概念,前者是指跑表计时结果换算为毫秒的值,而后者是指跑表计时结果中毫秒值(忽略了时、分、秒)。你说能一样吗?对于.Elapsed.Ticks跟.ElapsedTicks的区别,也是类似的。前者才是跑表计时的总时间,后者是一个“循环”改变的值(就好像1位10进制数字,从9以后就循环到0了)。因此后者根本是无意义的。
ElapsedTicks:如果一个“循环”改变的值的话;那是怎么循环的呢,1毫秒循环一次吗?在MSDN中ElapsedTicks:获取当前实例测量得出的总运行时间(用计时器计时周期表示)