реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> WinCE timer, как?
diwil
сообщение Apr 30 2009, 08:43
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Уважаемые,
кто может подсказать, как в винде измерить время, затраченное процессом для выполнения куска кода?

То что я нашел - это использовать внутренний счетчик как (однгако он учитывает время, затраченное на переключение контекста, прерывания и т.д.):

QueryPerformanceCounter(&pc1);
....... часть измеряемого кода .............
QueryPerformanceCounter(&pc2);

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

Заранее благодарен
Go to the top of the page
 
+Quote Post
abcdefg
сообщение Aug 25 2009, 15:02
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 201
Регистрация: 23-01-06
Из: Msk
Пользователь №: 13 490



Какая платформа?
Например, для SMDK2410 есть ошибка реализации в функции INT32 OALTimerCountsSinceSysTick() которая отвечает за этот счетчик

Цитата(diwil @ Apr 30 2009, 12:43) *
Уважаемые,
кто может подсказать, как в винде измерить время, затраченное процессом для выполнения куска кода?

То что я нашел - это использовать внутренний счетчик как (однгако он учитывает время, затраченное на переключение контекста, прерывания и т.д.):

QueryPerformanceCounter(&pc1);
....... часть измеряемого кода .............
QueryPerformanceCounter(&pc2);

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

Заранее благодарен
Go to the top of the page
 
+Quote Post
SBE
сообщение Sep 4 2009, 15:14
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 108
Регистрация: 8-09-05
Пользователь №: 8 384



Проверили, что PerformanceCounter реализован в на вашей платформе? По значению возвращаемому QueryPerformanceCounter или QueryPerformanceFrequency. У меня такой способ определения интервалов времени работает без проблем.

Только это не то, что следует использовать для профилировки времени выполнения, поскольку считать будет истекшее (Ellapsed time) время, а не время выполнения вашего кода (Application time). Удобнее использовать тулзы Remote Call profiler или Remote Kernel Tracker. Первый может давать времена выполнения кода процедур и т.п. с тем же разрешением, что и PerformanceCounter. Второй показывать графики выполнения с переключениями между потоками, и из него тоже можно получить время выполнения между событиями (чуть большими ухищрениями).

Наверно можно использовать GetThreadTimes для получения чистого времени исполнения потока, не пробовал.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 23:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01379 секунд с 7
ELECTRONIX ©2004-2016