2013-12-10 3 views
0

Я не говорю о кровососущем пауке как болезнь-распределителе, а вид клеща я записал здесь:Какова ценность тиков секундомера, если их продолжительность варьируется?

Stopwatch noLyme = new Stopwatch(); 
noLyme.Start(); 
. . . 
noLyme.Stop(); 
MessageBox.Show(string.Format(
    "elapsed milliseconds == {0}, elapsed ticks == {1}", 
    noLyme.ElapsedMilliseconds, noLyme.ElapsedTicks)); 

Что окно сообщения показало мне было 17357 миллисекунд и 56411802 тиков; это эквивалентно 3250.089416373797 тикам за миллисекунду, или примерно 3,25 миллиона клещей в секунду.

Поскольку отношение является таким нечетным (3250.089416373797: 1), я предполагаю, что продолжительность изменения тика зависит от используемого оборудования или от других факторов. В этом случае, на каком практическом пути используется количество отсчетов? Мне кажется, что миллисекунды имеют большую ценность. IOW: почему меня интересуют тики (переменные временные срезы)?

+1

См. [Секундомер. Частота] (http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.frequency (v = vs.110) .aspx). Один галочный секундомер равен секундам '1/секундомер.Frequency'. –

ответ

1

тики - это сырые единицы низкого уровня, в которых аппаратное обеспечение измеряет время.

Это как просить «какое использование бит, когда мы можем использовать ints». Ну, если бы у нас не было бит, ints не существовало бы!

Однако тики могут быть полезны. При подсчете тиков преобразование их в миллисекунды является дорогостоящим процессом. При правильном измерении вы можете считать все в тиках и преобразовывать результаты в секундах в конце процесса. При сравнении измерений абсолютные значения не могут быть релевантными, это могут быть только относительные различия, которые представляют интерес.

Конечно, в эти дни языка высокого уровня и многозадачности не так много случаев, когда вы могли бы пойти на голый металл таким образом, но почему не должно быть необработанное аппаратное значение через интерфейсы более высокого уровня ?

5

Из документации (с частотой, еще одним свойством Секундомер):

Каждый тик в значении ElapsedTicks представляет собой интервал времени, равный на 1 секунду, деленной на частоту.

Stopwatch.ElapsedTicks (MSDN)

Клещей полезны, если вам нужны очень точные сроки на основе специфики вашего оборудования.

2

Вы должны использовать тики, если хотите знать очень точное измерение производительности, характерное для данной машины. Внутренние аппаратные механизмы определяют преобразование от тиков к фактическому времени.

+2

+1. Millisecond - очень длинный интервал для CPU - поэтому, если вы измеряете производительность достаточно быстро, тики - это способ пойти (вы можете сохранить 'Frequency', чтобы сделать преобразование позже, если это необходимо). –