コンソールアプリケーションでテストします。実行中のUIスレッドやUIコントロールのイベントハンドラー内で実行されているものを削除します。また、メッセージを表示する行為はという巨大なのオーバーヘッドなので、各方法で行われているようにそのまま放置してください。実際にテストしたいのは、変数の定義と計算された値の割り当てのパフォーマンスの違いです。
ストップウォッチを追加して両方の時間を計測してください。
また、いくつかの設定を追加しました。テストする繰り返しの数と実行の平均回数を決めて結果を滑らかにすることができます。 2
方法1:0.0 MS
方法2:
Dim iterations = Enumerable.Range(1, 16).Select(Function(p) CInt(2^p))
Dim averages = 20
Dim durations As New Dictionary(Of Integer, Dictionary(Of Integer, Double))()
For Each iteration In iterations
Dim d As New Dictionary(Of Integer, Double)()
Dim sw As New System.Diagnostics.Stopwatch()
sw.Start()
For a = 1 To averages
For i = 0 To iteration - 1
Dim s = i & vbNewLine & i * 2 & vbNewLine & i * 3
Next
Next
sw.Stop()
d.Add(1, sw.ElapsedMilliseconds/averages)
sw.Restart()
For a = 1 To averages
For i = 0 To iteration - 1
Dim single_score As Integer = 0
Dim double_score As Integer = 0
Dim triple_score As Integer = 0
single_score = i
double_score = i * 2
triple_score = i * 3
Dim s = single_score & vbNewLine & double_score & vbNewLine & triple_score
Next
Next
sw.Stop()
d.Add(2, sw.ElapsedMilliseconds/averages)
durations.Add(iteration, d)
Next
For Each iteration In iterations
Console.WriteLine("Number of iterations: {0}", iteration)
Console.WriteLine("Method 1: {0:0.0} ms", durations(iteration)(1))
Console.WriteLine("Method 2: {0:0.0} ms", durations(iteration)(2))
Next
Console.ReadLine()
それらは、反復の同じ
数かなりある0.0ミリ秒反復
数:4
方法1: 0.0 ms
方法2:0.0 ms
反復回数:8
方法1:0 0.0ミリ
方法2:0.0ミリ秒反復
数:16
方法1:0.0 MS
方法2:0.0ミリ秒反復
数:32
方法1:0.0 MS
方法2: 0.0ミリ秒反復
数:64
方法1:0.1秒
方法2:0.1ミリ秒反復
番号:128
方法1:0.1 MS
方法2:0.4ミリ秒反復
番号:256
方法1:0.3 MS
方法2:0.2ミリ秒反復
番号:512
方法1:0.6 MS
方法2:0.4 MS 反復
番号:1024
方法1:0.7 MS
方法2:0.7ミリ秒反復
番号:2048
方法1:1.5 MS
方法2:1.1 ms
反復回数:4096
方法1:2.2 ms
方法2:2。2ミリ秒 反復
数:8192
方法1:4.3 MS
方法2:3.5ミリ秒反復
番号:16384
方法1:6.7 MS
方法2:6.7ミリ秒反復
数: 32768
方法1:13.7ミリ
方法2:13.4ミリ秒の反復
番号:65536
方法1:28.7ミリ
方法2:29.0ミリ秒
出典
2016-12-22 17:42:56
djv
ベンチマークテストを実行してみませんか?私は彼らが同じILにコンパイルすると推測しているので、おそらく同等です。 –
20人のMsgBoxの吹雪がユーザーに表示されることは想像もつかず、これまでどんなベストプラクティスともみなすことができました。値をデバッグしようとしている場合は、 'Debug.Print'または' Console.WriteLine'を使用してください。 – Plutonix
自分自身でテストを書いて、どちらが良いかを判断できるはずです。これらのパフォーマンスを改善するためのより良い方法をお探しの場合は、http://codereview.stackexchange.com/ – techturtle