2

我正在使用系统诊断秒表来计算我的功能运行所需的时间。目前输出0如下1ms。如何记录到毫秒到小数点后 4 位?我知道“滴答声”,但是我不希望将所有时间的滴答声转换为毫秒。

我目前正在使用以下代码:

System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
watch.Start();
myFunction();
watch.Stop();
double elapsedTime = watch.ElapsedMilliseconds;   //How to get to 4 decimal places? 
Console.WriteLine("Time " + elapsedTime );
4

6 回答 6

3

你可以使用TimeSpan.TotalMilliseconds属性。

获取以整毫秒和小数毫秒表示的当前 TimeSpan 结构的值。

System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
watch.Start();
for(int i = 0; i <= 100000; i++)
{
    //        
}
watch.Stop();

Console.WriteLine("Time elapsed (ms): {0}", watch.Elapsed.TotalMilliseconds);

输出格式如下;

经过时间(毫秒):0.1575

这是一个DEMO.

于 2013-04-03T10:09:39.710 回答
2

而不是毫秒,你应该工作watch.Elapsed.TotalMilliseconds

Stopwatch watch = new Stopwatch();
watch.Start();
myFunction();
watch.Stop();
double elapsedTime = watch.Elapsed.TotalMilliseconds;
Console.WriteLine("Time " + elapsedTime);

在此处输入图像描述

输出 在此处输入图像描述

于 2013-04-03T10:06:39.573 回答
0

为了获得微秒而不是毫秒,您可以使用:

double elapsedMicroseconds = watch.ElapsedTicks / (TimeSpan.TicksPerMillisecond / 1000);
于 2013-04-03T10:09:24.873 回答
0

使用String.Format和做

string s = String.Format({0:0.4F}, elapsedTime);

这应该可以解决问题。

于 2013-04-03T10:09:47.820 回答
0

文档中:

[ElapsedMilliseconds] 属性表示向下舍入到最接近的整数毫秒值的经过时间。对于更高精度的测量,请使用 Elapsed 或 ElapsedTicks 属性。

于 2013-04-03T10:10:29.253 回答
0

如果您使用的是 Visual Studio 2010 或更高版本,我建议您应该坚持使用 VS 附带的性能分析工具。他们将为您提供关于特定功能和子功能占用多少 CPU 和内存的准确和详细的结果。

于 2013-04-03T10:10:45.447 回答