2011-10-20 14 views
5

プログラムが実行している時間をテキストボックスまたは出力でどのように出力しますか?プログラムの実行に時間がかかります

forループに表示して、各forループにどれくらいの時間が必要なのかを確認します。

+1

この記事を見てみましょう:[ストップウォッチクラスとC#の機能のパフォーマンスをタイミング](http://www.dijksterhuis.org/timing-function-performance-stopwatch-class/) – R0MANARMY

+0

さて、あなたはセットタイマーを停止し、タイマーを停止し、テキストボックスに時間を入力します。簡単!より深刻な場合は、あなたの答えが最初であったため、http://msdn.microsoft.com/en-us/library/system.datetime.now.aspxと '.Subtract()' – alf

答えて

12

あなたは試みることができる:

DateTime dt = DateTime.Now; 
for (.......) 
{ 
} 
TimeSpan ts = DateTime.Now - dt; 
textbox1.Text = ts.TotalMilliseconds.ToString(); 

か(をMSDNに応じて)あなたがより良い解決

Stopwatch stopWatch = new Stopwatch(); 
stopWatch.Start(); 
for (.......) 
{ 
} 
stopWatch.Stop(); 
textbox1.Text = stopWatch.ElapsedMilliseconds.ToString(); 
+3

[MSDN](http://msdn.microsoft.com/en-us/library/system.datetime。 now.aspx)のドキュメントは、ベンチマーク目的でDateTimeクラスを使用して**に対して**を特にアドバイスしています。 – R0MANARMY

+0

@ R0MANARMY:はい、そうです。私は両方のソリューションを含む私の記事を編集しました。ありがとう – Marco

+0

あなたは 'stopWatch.ElapsedMilliseconds'を直接使用し、中間のTimeSpan変換を取り除くことができます – sll

10
var watch = System.Diagnostics.Stopwatch.StartNew(); 

for() 
{ 
// .. 
} 

watch.Stop(); 

// Format 00:00:02.0001008 
string elapsed = watch.Elapsed.ToString();  

// Milliseconds like 2000 for 2 seconds 
string elapsedMs = watch.ElapsedMilliseconds.ToString(); 

System.Diagnostics.Debug.WriteLine(elapsed); 
+0

+1を試してみてください正しい!! – Marco

0

このようなもの:?

DateTime start = DateTime.UtcNow; 

//... processing ... 

DateTime end = DateTime.UtcNow; 

Syste.Diagnostics.Debug.WriteLine((end - start).ToString()); 
+1

[MSDN](http://msdn.microsoft.com/en-us/library/system.datetime.now.aspx)のドキュメントでは、ベンチマークの目的でDateTimeクラスを使用して**に対して**を特に推奨しています。 – R0MANARMY

+1

私は細かいタイマーがあることを知っていると確信しています。これは秒や分を見たい場合にはいいですね。:) –

0

が必要な場合は、タイマーを作成し、その後、アプリケーションの起動時に現在のDateTimeを保存することができそれは毎秒発火する。あなたが現在のDateTimeを取得したら、それらを減算してTimeSpanを取得し、それを使用してテキストボックスを埋めます。

+0

秒を数えていませんか? – R0MANARMY

+0

タイムボックスを測定するのではなく、毎秒入力ボックスを更新します。 – TJHeuvel

0

これらの2行を追加します。Forループ間または関数間の速度をテストするコードの間に追加します。

Debug.WriteLine(DateTime.Now.ToLongTimeString()); 

    --your code 

Debug.WriteLine(DateTime.Now.ToLongTimeString()); 
+0

これは、コードの実行に要した時間だけでなく、DateTimeを文字列に変換してコードを実行するのにかかる時間を測定するため、正確ではありません。コードが数分のオーダーで実行される場合、数ミリ秒は重要ではありませんが、実行時間が短くなると違いが生じる可能性があります。 – R0MANARMY

+0

@Romanarmy、あなたは間違いなく、時間厳守の核プロジェクトです。あなたが知っているように、私たちが日々開発しているプロジェクトのほとんどは、Nuclear Web Applicationsです。 –

+0

いいえ、私たちはすべてのコードを厳密なループで実行しており、効率が悪いということは、ユーザーがボタンをクリックするたびにUIが1秒間ロックアップするため、ユーザーエクスペリエンスが悪いことを意味します。 – R0MANARMY

関連する問題