|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.05.2010, 13:55 | #1 |
Пользователь
Регистрация: 27.05.2010
Сообщений: 17
|
проблема с таймерами. функция clock()
возникла проблема. мне нужно для моей программы засечь время исполнения нескольких из функций в тактах. использую clock() из time.h
my_f-просто название для примера, код функции большой и с использованием специализированной библиотеки, поэтому код самой функции не выкладываю(но действия она выполняет, т.е. такты процессора по идее должны тратиться) Код:
документацию читал, все сделал правильно... з.ы. кому интересно - проект компилился и запускался под MSVS6.0 Последний раз редактировалось thomson; 27.05.2010 в 15:04. |
27.05.2010, 14:03 | #2 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Попробуйте между измерениями выполнить каждую функцию раз по тысяче, например (в цикле). По моему опыту - точность обычных таймеров порядка десяти миллисекунд и, вполне возможно, что у этого таймера просто не хватает разрешающей способности чтобы отловить время, за которое выполняется функция.
Кстати, оформляйте код не в тег QUOTE, а в CODE - значок # прямо справа от QUOTE.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
27.05.2010, 14:15 | #3 | |
Пользователь
Регистрация: 27.05.2010
Сообщений: 17
|
Цитата:
2. я меряю не в секундах(тогда надо было бы делить на CLOCKS_PER_SEC (стандартную С++ константу), а в тактах. функции достаточно громоздкие(т.к. работают с числами большой длины, больше 64 бит).. тем не менее 0 но я попробую и напишу результат ещё какие-нибудь предположения и догадки? |
|
27.05.2010, 14:36 | #4 |
Я
Форумчанин
Регистрация: 24.04.2010
Сообщений: 693
|
Одну ошибку точно вижу
Код:
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©. |
27.05.2010, 14:45 | #5 |
Пользователь
Регистрация: 27.05.2010
Сообщений: 17
|
исправил, но прогу, представленную на форуме, я писал по памяти... в коде действительно стоит %f но это ситуацию не спасает, пробовал и через int, ulong и т.д.
суть проблемы остается та же - 0 тактов! алгоритм(фунции) один и тот же, только описан разными методами. но 0 там точно не может быть! |
27.05.2010, 14:59 | #6 |
Я
Форумчанин
Регистрация: 24.04.2010
Сообщений: 693
|
Попробуй приостановить отладку в на той строчке где вывод и посмотри значение result, если равно 0, тогда посмотри значения переменных start и finish. Второе объявление:
Код:
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©. |
27.05.2010, 15:05 | #7 |
Пользователь
Регистрация: 27.05.2010
Сообщений: 17
|
сори. надо было сразу код сюда скопипастить. проверил-я не переинициализировал переменные в своей проге
|
27.05.2010, 17:13 | #8 |
Пользователь
Регистрация: 27.05.2010
Сообщений: 17
|
если кто-то знает другой метод замера времени - прошу рассказать.
условие - он должен быть достаточно точным, чтобы показать количество тактов, за которое выполняется функция |
27.05.2010, 17:17 | #9 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Вот здесь видел - упоминалась функция rdtsc. Самолично про нее ничего сказать не могу.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
27.05.2010, 18:49 | #10 |
Пользователь
Регистрация: 27.05.2010
Сообщений: 17
|
конечно с подключением асма - это яд(я асм не очень перевариваю(плохое отношение), но код читать могу)
rdtsc() помогла спасибо за ссылку, уже потестил на простых примерах, осталось в свою прогу вставить единственное - я так понял, что человек сам функцию писал, т.к. в MSDN она есть, написано каой header подсоединять, но что-то "моя твоя не понимай", типа нету такого но решение нашел. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Блок-схема программы с таймерами | BigQuestion | Помощь студентам | 2 | 07.04.2010 11:04 |
C++ проблема с таймерами | ManInBlack | Помощь студентам | 0 | 25.12.2009 19:41 |
Помогите с таймерами C++ | liosha | Win Api | 1 | 25.10.2009 10:44 |
Функция GetAsyncKeyState(). Проблема проекта. | Fabio | Общие вопросы C/C++ | 2 | 07.03.2009 09:12 |
Работа с таймерами | Mr. Demetrius | JavaScript, Ajax | 7 | 16.03.2008 22:29 |