Почему ElapsedTicks X 10 000 не равняется ElapsedMilliseconds для Секундомера .NET?

Я пробую к тесту производительности некоторый код. Я использую секундомер. Когда я произвел количество миллисекунд, оно всегда говорит мне 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))
7
задан uriDium 9 June 2010 в 15:55
поделиться

2 ответа

Такты секундомера отличаются от тактов DateTime .

Длина такта секундомера зависит от частоты секундомера (один такт равен одной секунде, разделенной на частоту, как описано в документации MSDN для Stopwatch.ElapsedTicks .

. ] Можно было бы возразить, что Stopwatch.ElapsedTicks был неудачным выбором имени для этого свойства из-за возможности путаницы с тиками DateTime. Я бы предпочел что-то вроде ElapsedRawTicks или другой подходящий квалификатор прилагательного. намек на то, что это не стандартные клещи.

10
ответ дан 7 December 2019 в 01:16
поделиться

Убедитесь, что вы действительно запускаете секундомер и что вы используете Stopwatch.ElapsedMilliseconds или Stopwatch.Elapsed.TotalMilliseconds.

0
ответ дан 7 December 2019 в 01:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: