Я пытаюсь определить, сколько времени требуется сетевому пакету для перемещения от Wireshark (который, как я полагаю, довольно близок к аппаратному обеспечению) до точки в моем коде, в которой я вызываю ::QueryPerformanceCounter. Я фиксирую в Wireshark временную метку пришедшего пакета, но не знаю, как сравнить ее со значением, возвращаемым ::QueryPerformanceCounter.
Сопоставьте отметку времени Wireshark с возвращаемым значением ::QueryPerformanceCounter
comment
Счетчики производительности — это просто постоянно увеличивающийся счетчик, который не может быть связан с отметкой времени.
- person Some programmer dude   schedule 14.12.2011
comment
Возможно, это так, но WinPcap (библиотека, лежащая в основе Wireshark) использует QueryPerformanceCounter для определения временных меток, поэтому должен быть способ объединить результат QPC с другим значением для сравнения.
- person endian   schedule 14.12.2011
comment
Возможно, вы могли бы взглянуть на исходный код WinPcap, чтобы увидеть, что именно он делает для получения метки времени, и сделать то же самое?
- person NPE   schedule 14.12.2011
Ответы (1)
Вы можете вызвать QueryPerformanceFrequency, чтобы получить количество отсчетов в секунду. Это означает, что если у вас есть два показания счетчика, один, когда Wireshark получает пакет, а второй, когда пакет достигает вашего кода, вы можете вычесть их, чтобы получить количество счетчиков, а затем использовать частоту, чтобы получить продолжительность времени. Однако необработанное значение счетчика не имеет значения — оно имеет значение только по сравнению с другим значением этого счетчика.
person
Puppy
schedule
14.12.2011
Тактовая частота процессора может меняться, поэтому использовать ее в течение длительного периода времени ненадежно.
- person Abyx; 14.12.2011
Спасибо. Я не думаю, что смогу получить доступ к значению Wireshark/WinPcap для QueryPerformanceCounter. Отметка времени, которую он выдает, представляет собой количество секунд с 1970 года, за которым следует значение доли секунды, рассчитанное с помощью разницы QueryPerformanceCounter. Мне нужно будет подумать, могу ли я вычислить то же значение в своем коде.
- person endian; 14.12.2011