2016-06-15 7 views
0

コードの実行時間を計算するコードブロックがあります。ブロックがDispatcherTimer経由で毎秒呼び出されるメソッド。CでのTimeSpanの合計時間#

写真から分かるように、span4.totalsecondsは約0ですが、(DateTimeOffset.Now - now2)の持続時間は約1秒です。

What's going on?

//some code here 
span4 = DateTimeOffset.Now - now2; 
someInfo.Text = (DateTimeOffset.Now - now2).TotalSeconds.ToString(); 
now2 = DateTimeOffset.Now; 
+2

を – Steve

+1

'DateTimeOffset.Now'は実際にNow-Nowを意味します。評価の瞬間、つまり時計を追加するときに時間があります。 2番目は今すぐ最初のデバッグ中に1秒後に簡単に呼び出すことができる –

+0

@ Steve私はTimer.Tickを介してメソッドの異なる呼び出しの間に実行時間は正確には必要ではなく、時間を必要としません。 –

答えて

2

DateTimeOffset.Nowあなたは2回同じsubstractionをやっているなぜあなたは...それを呼び出すたびにdiferent値を持つことになりますので、?それを試してみてください。

span4 = DateTimeOffset.Now - now2; 
someInfo.Text = (span4).TotalSeconds.ToString(); 
now2 = DateTimeOffset.Now; 
+0

問題はspan4.totalsecondsが0に等しいことですが、(DateTimeOffset.Now - now2).TotalSecondsを見ると約1秒です。正しい値は1秒ですか?しかし、。 –

+0

正しい値はあなたが呼び出している瞬間に依存し、その値は毎秒変化します – lem2802

+0

私はDispatcherTimer経由で毎秒それを呼び出します –

2

あなたは.NETの実行時間を計測する方法は、ストップウォッチクラス使用している:私はストップウォッチクラスを使用するだろうが、おそらく私はあなたの問題を誤解しているコードの実行時間を測定するために

Stopwatch stopWatch = new Stopwatch(); 
stopWatch.Start(); 
Thread.Sleep(10000); 
stopWatch.Stop(); 

// Get the elapsed time as a TimeSpan value. 
TimeSpan ts = stopWatch.Elapsed; 
+1

本当ですがOPの問題は説明しません。同じ問題(1秒差)が「ストップウォッチ」でも発生することは間違いありません。 –