我常想,什麼是計時器滴答,通過Stopwatch.ElapsedTicks
Stopwatch.ElapsedTicks
等於Stopwatch.Elapsed.Ticks
使用的單位。
但事實並非如此。後者的數量爲100納秒,前者使用一個叫做timer ticks
的神祕單位。我想知道這些是什麼,爲什麼它們與通常的計量單位不同?
我常想,什麼是計時器滴答,通過Stopwatch.ElapsedTicks
Stopwatch.ElapsedTicks
等於Stopwatch.Elapsed.Ticks
使用的單位。但事實並非如此。後者的數量爲100納秒,前者使用一個叫做timer ticks
的神祕單位。我想知道這些是什麼,爲什麼它們與通常的計量單位不同?
從the docs:
通過計數計時器的經過時間的秒錶措施蜱在底層計時器機制。如果安裝的硬件和操作系統支持高分辨率性能計數器,則秒錶類會使用該計數器來測量已用時間。否則,秒錶類會使用系統計時器來測量已用時間。使用Frequency和IsHighResolution字段來確定秒錶計時實施的精度和分辨率。
是的話,那就是「蜱」痛過載是指兩個不同的東西:(
我認爲這主要是因爲Stopwatch
是給性能計數器的一個非常「原始」的說法,它可以有不同的實現它所指由「滴答」。
的Stopwatch.ElapsedTicks
正在測量「嘀」的秒錶,這是1秒/ Stopwatch.Frequency
。
在內部的時間長度而言,這是基於Windows High Performance Counter Support(如果您的系統支持,幾乎總是如此)。原生電話號碼爲QueryPerformanceFrequency,根據您的硬件支持,其長度可能會有所不同。
也許它有助於看到控制檯輸出...
鏈表500插入/刪除操作ElapsedTicks:45871
鏈表500插入/刪除操作Elapsed.ticks:141266
鏈表500插入/刪除操作以毫秒爲單位: 14.1266
列表500插入/刪除操作ElapsedTicks:1235121
列表500插入/刪除操作Elapsed.ticks:3803744
列表500插入/刪除操作以毫秒爲單位:380.3744
(從中可以確認Elapsed.Ticks的測量精度爲100納秒)
如何將'Stopwatch'刻度轉換爲'TimeSpan'刻度,或者是否應該從不同的字段獲取?我確實需要它是確切的。 – Shimmy 2016-02-09 03:25:45
@Shimmy:那麼你可以使用'Elapsed'屬性... – 2016-02-09 07:01:18
這就是我最終做的。非常感謝。 – Shimmy 2016-02-09 18:04:39