c#stopwatch.elapsed值不准确

时间:2015-01-19 18:14:25

标签: c# .net

我想计算我正在处理的程序的总运行时间。

目前代码看起来与此类似(sw是程序类的成员):

 void Main(string[] args)
 {
     sw.Start();
     //Code here starts a thread
     //Code here joins the thread
     //Code operates on results of threaded operation
     sw.Stop();
     Console.WrtieLine("Operation took {0}", sw.Elapsed.ToString());
 }

我认为这个问题是由线程控制程序执行引起的,但这是占用时间最多的操作,我应该避免更改代码,因为其他项目依赖于它好。

作为参考,简单观察表明该代码需要将近半个小时才能运行,但根据秒表所用的时间仅为23秒左右。确切输出Operation took 00:00:23.1064841

1 个答案:

答案 0 :(得分:1)

在这种情况下,最好的解决方案是使用Environment.TickCount,因为它测量自系统启动以来的毫秒数,并且不像Stopwatch那样依赖于处理器核心。

int StartTime = Environment.TickCount;
//Your Code to measure here
int EndTime = Environment.TickCount;
int runningTime = EndTime - StartTIme; //running time in milliseconds
// code to do whatever you want with runningTime