DOBON.NETプログラミング道掲示板

ツリー一括表示

Nomalアイコン StopwatchクラスのElapsedMillisecondsの挙動 /あばば無人君 (20/10/14(Wed) 14:30) #34560
Nomalアイコン Re[1]: StopwatchクラスのElapsedMillisecondsの挙動 /Hongliang (20/10/14(Wed) 14:41) #34561
  └Nomalアイコン Re[2]: StopwatchクラスのElapsedMillisecondsの挙動 /あばば無人君 (20/10/14(Wed) 15:19) #34562 解決み!


親記事 / ▼[ 34561 ]
■34560 / 親階層)  StopwatchクラスのElapsedMillisecondsの挙動
□投稿者/ あばば無人君 一般人(9回)-(2020/10/14(Wed) 14:30:27)
  • アイコン環境/言語:[Windows10(1909) 64bit、.Net Core 3.1、C#] 
    分類:[.NET] 

    いつもDOBON.NETの記事や掲示板を見て勉強させて貰っています。

    さて、掲題の件ですが、StopwatchクラスのElapsedMillisecondsは
    Stopwatch.Start()で計測を開始してからずっと放置していると
    どうなるのでしょうか?

    ElapsedMillisecondsはlong型で返るので9223372036854775807ミリ秒
    (約2億9千万年)まで計測可能かと思われるのですが、たとえば
    Stopwatch.Start()で計測を開始してから1年ほど経ったとすると
    経過時間の蓄積?によってアプリの動作が重くなるといったことが
    起きたりするのでしょうか?

    年レベルの放置結果を自分で確かめることはさすがに厳しいので
    どなたかご存知の方がいらっしゃいましたら教えて頂きたいです。

違反を報告
[ □ Tree ] 返信 削除キー/

▲[ 34560 ] / ▼[ 34562 ]
■34561 / 1階層)  Re[1]: StopwatchクラスのElapsedMillisecondsの挙動
□投稿者/ Hongliang 大御所(589回)-(2020/10/14(Wed) 14:41:57)
  • アイコンソースを確認してみるといいかと。
    .NET Frameworkのソース
    https://referencesource.microsoft.com/#System/services/monitoring/system/diagnosticts/Stopwatch.cs,ceb0ba9cc88de82e
    .NET Coreのソース
    https://github.com/dotnet/runtime/blob/master/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Stopwatch.cs

    結論をいうと、開始時のタイムスタンプと現在/終了時のタイムスタンプから計算してるだけなので重くなるとかそういうのはないです。
違反を報告
[ 親 34560 / □ Tree ] 返信 削除キー/

▲[ 34561 ] / 返信無し
■34562 / 2階層)  Re[2]: StopwatchクラスのElapsedMillisecondsの挙動
□投稿者/ あばば無人君 一般人(10回)-(2020/10/14(Wed) 15:19:27)
  • アイコンHongliangさん、ご返信ありがとうございます。

    > 結論をいうと、開始時のタイムスタンプと現在/終了時のタイムスタンプから計算してるだけなので重くなるとかそういうのはないです。

    ソースを見るとGetRawElapsedTicks()で「現時点−開始時点」していました。
    安心してStopwatchクラスを使用できそうです。

    非常に早い返信をして頂き本当に助かりました。
    これで本件は解決済みとさせて頂きます。
    本当にありがとうございました。

解決み!
違反を報告
[ 親 34560 / □ Tree ] 返信 削除キー/


Mode/  Pass/


- Child Tree -