2012-06-21 5 views
7

コードのサイズとその実行時間を見つける方法はありますか?2つのコードを比較してどちらが良いかを判断できますか?例えばC#コードサイズとコードの実行時間

は、私はこの

コード1

for(int i=0; i<5; i++) 
{ 
    sum+=1; 
} 

と決定するには、この

コード2

for(int i=0; i<=4; i++) 
{ 
    sum = sum + 1; 
} 

のサイズと実行時間を見つけたいと言うことができます私はこの例を気にしません。たとえば、結果は次のようになります。

Code 1: 
Size: ? KB 
Time: ? ms 

Code 2: 
Size: ? KB 
Time: ? ms 
+1

「sum ++」を使用してみませんか? 'add'ではなく' inc'を使います。そして 'inc'は –

+0

*(MSILの翻訳後)...一般的に高速である –

+0

私の推測では、それはコンパイラ/ジッタがあなたのため – Servy

答えて

15

ANTS Profiler http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/(有料の製品だが、試用版がある)または市販のProfiler製品(ANTS、vTune、OptimizeIt、DevPartner、YourKit、dotTrace)を使用することができます。

また、実行時間(迅速かつ安価な)を比較するために、手動ストップウォッチ計測器を使用して、これらの2つの機能を実行するいくつかのユニットテストを設定することによって、自分で機能をintstrumentことがあります。単体テストでは、後で実装を変更する必要がある場合は、パフォーマンスに回帰がないことを保証することもできます。

var stopWatch = new Stopwatch(); 
    stopWatch.Start(); 
    var result = CallFunction(); 
    stopWatch.Stop(); 
    var executionTime = stopWatch.Elapsed; 
+0

が – a1204773

+0

私は[Stopwatch.StartNew() ''](の使用を提案することができるコードのために、すべての製品を一覧表示いただき、ありがとうござい必要なものではなかったhttp://msdn.microsoft.com /en-us/library/system.diagnostics.stopwatch.startnew.aspx)? – Adam

2

あなたは、ファイルのサイズを決定するために(Lengthプロパティを参照してください)FileInfoクラスを使用することができます。

あなたはそれがプログラムを実行するのにかかる時間を決定するためにStopwatchクラスを使用することができます。

+0

はストップウォッチをありがとうしかしFileInfoには、私は – a1204773

3

http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspxはあなたがStopWatch使用する必要があります実行時間を測定するには - あなたは、複数回の反復を複数回実行し、適切なベンチマークをしたい場合は、それらを平均化する必要があります。あなたが利用可能な多くのメモリプロファイラのいずれかを使用することができます - -

var sw = new StopWatch(); 
sw.Start(); 

// do a million iterations 

sw.Stop(); 

var time = sw.Elapsed; 

メモリサイズのためとして

ANTS memory profilerdotTraceは、2種類の市販のオプションです。

+0

コードと製品をありがとう – a1204773

関連する問題