naw*_*fal 38 c# performance system.diagnostics stopwatch .net-4.0
我在这些之间完全感到困惑4.ElapsedMilliseconds(long),ElapsedTicks(long),Elapsed.TotalMilliseconds(double)和Elapsed.Milliseconds(int)之间有什么区别?
我有一个功能
{
Stopwatch sw = new Stopwatch();
sw.Start();
MyTimeConsumingAction();
sw.Stop();
sw.//what?
}
Run Code Online (Sandbox Code Playgroud)
如何从秒表对象的已用属性(以毫秒为单位)获取长时间运行的进程所消耗的正确时间?
编辑:我试过msdn文档,但它没有详细说明..
Dr.*_*ABT 51
Elapsed.TotalMilliseconds(double)返回自启动以来经过的整数和小数毫秒的总数
例如,在1.23456秒停止的秒表将在此属性中返回1234.56.请参阅MSDN上的TimeSpan.TotalMilliseconds
Elapsed.Milliseconds(int)返回当前秒的整数毫秒数
例如,1.234秒的秒表将在此属性中返回234.请参阅TimeSpan.Milliseconds
ElapsedTicks(long)返回秒表开始后的刻度.
在原始问题的上下文中,与秒表类有关,ElapsedTicks是经过的刻度数.刻度以Stopwatch.Frequency的速率发生,因此,为了计算经过的秒数,计算:numSeconds = stopwatch.ElapsedTicks/Stopwatch.Frequency.
旧答案将滴答定义为100纳秒周期的数量,这在DateTime类的上下文中是正确的,但在Stopwatch类的上下文中不正确.请参阅 MSDN上的Stopwatch.ElapsedTicks.
ElapsedMilliseconds返回一个舍入的数字到最接近的完整毫秒,因此这可能缺少Elapsed.TotalMilliseconds属性可以给出的精度.
Elapsed.TotalMilliseconds是一个double,它可以将执行时间返回到部分毫秒,而ElapsedMilliseconds是Int64.例如,0.0007毫秒的秒表将返回0,或者1234.56毫秒将在此属性中返回1234.因此,对于精度始终使用Elapsed.TotalMilliseconds.
有关说明,请参阅MSDN上的Stopwatch.ElapsedMilliseconds.
最好的祝福,
小智 7
反映秒表类显示ElapsedMilliseconds是经过时间刻度转换(和舍入)到毫秒:
public TimeSpan Elapsed
{
get
{
return new TimeSpan(this.GetElapsedDateTimeTicks());
}
}
public long ElapsedMilliseconds
{
get
{
return this.GetElapsedDateTimeTicks() / 10000L;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
msdn的简短解释:
ElapsedMilliseconds
Run Code Online (Sandbox Code Playgroud)
此属性表示经过的时间向下舍入到最接近的整数毫秒值。对于更高精度的测量,请使用 Elapsed 或 ElapsedTicks 属性。
ElapsedTicks
Run Code Online (Sandbox Code Playgroud)
该属性表示底层计时器机制中经过的滴答数。滴答声是秒表计时器可以测量的最小时间单位。使用Frequency 字段将ElapsedTicks 值转换为秒数。
Elapsed
Run Code Online (Sandbox Code Playgroud)
使用 Elapsed 属性可通过 TimeSpan 方法和属性检索经过的时间值。例如,您可以将返回的 TimeSpan 实例格式化为文本表示形式,或将其传递给需要 TimeSpan 参数的另一个类。
| 归档时间: |
|
| 查看次数: |
23748 次 |
| 最近记录: |