Проверьте это в приложении консоли. Удалите такие вещи, как запуск в потоке пользовательского интерфейса и запуск внутри обработчиков событий элементов управления пользовательского интерфейса. Кроме того, акт отображения сообщения огромный накладные расходы, поэтому оставьте его, как это делается в каждом методе. Все, что вы действительно хотите протестировать, - это разница в производительности между определением переменных и назначением вычисленных значений, а также вычислением значений в строке с тремя меньшими переменными.
Добавить секундомер во время обоих методов.
Я также добавил некоторую конфигурацию, чтобы вы могли решить, сколько итераций для тестирования и сколько раз усреднять пробеги, чтобы сгладить результаты.
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()
Они являются в значительной степени тот же
Число итераций: 2
Метод 1: 0.0 мс
Метод 2: 0.0 мс
Число итераций: 4
Метод 1: 0,0 мс
Способ 2: 0,0 мс
Число итераций: 8
Способ 1: 0 .0 мс
Метод 2: 0.0 мс
Число итераций: 16
Метод 1: 0.0 мс
Метод 2: 0.0 мс
Число итераций: 32
Метод 1: 0.0 мс
Способ 2: 0.0 мс
Число итераций: 64
Метод 1: 0,1 мс
Способ 2: 0,1 мс
Количество итераций: 128
Метод 1: 0,1 мс
Способ 2: 0,4 мс
Количество итераций: 256
Метод 1: 0,3 мс
Способ 2: 0,2 мс
Число итераций: 512
Метод 1: 0,6 мс
Способ 2: 0,4 мс
Число итераций: 1024
Метод 1: 0,7 мс
Способ 2: 0,7 мс
Число итераций: 2048
Метод 1: 1,5 мс
Способ 2: 1,1 мс
Число итераций: 4096
Способ 1: 2,2 мс
Способ 2: 2.2 мс
Количество итераций: 8192
Метод 1: 4,3 мс
Способ 2: 3,5 мс
Число итераций: 16384
Метод 1: 6,7 мс
Способ 2: 6,7 мс
Число итераций: 32768
Метод 1: 13,7 мс
Способ 2: 13,4 мс
Число итераций: 65536
Метод 1: 28,7 мс
Способ 2: 29,0 мс
Почему бы вам не пройти тест, чтобы проверить их? Я предполагаю, что они оба скомпилируются с тем же или похожим IL, поэтому они, вероятно, эквивалентны. –
Трудно представить, что показ метели 20 MsgBox для пользователя может когда-либо считаться любой лучшей практикой. Если вы пытаетесь отлаживать значения, используйте 'Debug.Print' или' Console.WriteLine' – Plutonix
. Вы должны иметь возможность написать собственный тест, чтобы определить, что лучше. Если вы ищете более эффективные способы повышения производительности, вы можете задать этот вопрос по адресу http://codereview.stackexchange.com/ – techturtle