Я пробую к тесту производительности некоторый код. Я использую секундомер. Когда я произвел количество миллисекунд, оно всегда говорит мне 0, таким образом, я думал, что попробую количество галочек. Я вижу, что количество галочек - приблизительно 20 000 - 30 000. Рассмотрение MSDN в TimeSpan. TicksPerMillisecond это говорит это, является 10 000 галочек на миллисекунду. В этом случае, почему прошедшие миллисекунды на моем секундомере не появляющийся как 2 или 3?
Что я пропускаю? Я даже произвел результат на той же строке. Это - то, что я получаю.
Time taken: 26856 ticks, 0 ms
И это постоянно.
РЕДАКТИРОВАНИЕ (Добавленный некоторый код) Это - мой код, который у меня есть выполнение в цикле. Я понимаю, что создаю новый секундомер каждый раз, который не очень эффективен, но я не вижу, как он мог скосить мои результаты.Спасибо, ребята
Dim SW = New Stopwatch()
SW.Reset()
SW.Start()
MethodCall()
SW.Stop()
Console.WriteLine(String.Format("Time to increase counters: {0} ticks, {1} ms", SW.ElapsedTicks, SW.ElapsedMilliseconds))
Такты секундомера
отличаются от тактов DateTime
.
Длина такта секундомера
зависит от частоты секундомера (один такт равен одной секунде, разделенной на частоту, как описано в документации MSDN для Stopwatch.ElapsedTicks .
. ] Можно было бы возразить, что Stopwatch.ElapsedTicks
был неудачным выбором имени для этого свойства из-за возможности путаницы с тиками DateTime. Я бы предпочел что-то вроде ElapsedRawTicks или другой подходящий квалификатор прилагательного. намек на то, что это не стандартные клещи.
Убедитесь, что вы действительно запускаете секундомер
и что вы используете Stopwatch.ElapsedMilliseconds
или Stopwatch.Elapsed.TotalMilliseconds
.