Как определить скорость передвижения выполнения кода в мс?, Передвижения линии в мс |
Здравствуйте, гость ( Вход | Регистрация )
Как определить скорость передвижения выполнения кода в мс?, Передвижения линии в мс |
zuze |
30.1.2013, 11:33
Сообщение
#11
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
Что за первое второе третье и четвертое? вам нужно только elapsed() - возвращает время в мс прошедшее после вызова start(). У меня вертикальная линия передвигаеться по горизонтали до тех пор пока я не останавлю. От точки до точки передвижение идёт со скоростью 50 миллисекунд или 0.05 секунд. Наверно надо обнулять таймер или делить на количество отрезков пройденной линией. возвращает время в мс прошедшее после вызова start(). А в каких единицах возвращает? |
|
|
sidsukana |
30.1.2013, 11:46
Сообщение
#12
|
Участник Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: 2 |
|
|
|
zuze |
31.1.2013, 7:45
Сообщение
#13
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
Решил замерить так:
Глобально объявил
Где запускаю таймер линии делаю
После перерисовки линии, то есть update()
Начал показывать значения, но почему-то не точные, буду разбираться. |
|
|
zuze |
31.1.2013, 10:06
Сообщение
#14
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
Дело в том, что у меня линия сдвигается от 0 до 720. Каждый раз идёт сдвиг на 6 градусов, только в прямоугольных координатах. Получается, полностью линия пройдёт за 120 сдвигов.
Следовательно надо в таймере (0.05*1000) / 120. Но это значение меньше 1 мс. Но на 120 сдвиге будет равна 50. 1. Может быть интервал времени каждого сдвига меньше 1 мс и из-за этого неправильные результаты показывает? 2. Если да, то что с этим делать? Сообщение отредактировал zuze - 31.1.2013, 10:08 |
|
|
sidsukana |
31.1.2013, 10:50
Сообщение
#15
|
Участник Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: 2 |
Если ты каждый сдвиг измеряешь, а так как значение меньше 1мс и выведет 0, то само собой сумма нулей равна нулю)
|
|
|
zuze |
31.1.2013, 10:53
Сообщение
#16
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
Если ты каждый сдвиг измеряешь, а так как значение меньше 1мс и выведет 0, то само собой сумма нулей равна нулю) Что удивительно значение не 0, а 800 с чем то или около 800. Почему так, не могу понять? Как я узнал функция GetTickCount() имеет очень большую погрешность 10 миллисекунд. Может использовать "QueryPerformanceCounter"? Вроде это очень точное определени. Сообщение отредактировал zuze - 31.1.2013, 11:14 |
|
|
sidsukana |
31.1.2013, 11:29
Сообщение
#17
|
Участник Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: 2 |
В C++11 есть модуль chrono для точного измерения времени
http://stackoverflow.com/questions/1487695...esolution-timer вот примеры работ Но это С++11 нет гарантий что ваш компилятор поддерживает его. |
|
|
Алексей1153 |
31.1.2013, 12:32
Сообщение
#18
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
zuze, такие точности в одном цикле не посчитаешь. Делай 1000 полных циклов сдвига, замеряй общее время, потом дели на 1000
при этом можно обойтись простым секундомером или секундной стрелкой на простых часах Цитата Как я узнал функция GetTickCount() имеет очень большую погрешность 10 миллисекунд. а это чушь - функция возвращает счётчик тиков с начала включения системы, при чём тут какая-то погрешность ? Другое дело, что вызывать из обычного потока со слипами её получится с не очень точным периодом - порядка 10...16мс и ещё вопрос - зачем делается это измерение ? Это важный вопрос ) Сообщение отредактировал Алексей1153 - 31.1.2013, 12:31 |
|
|
zuze |
31.1.2013, 13:17
Сообщение
#19
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
и ещё вопрос - зачем делается это измерение ? Это важный вопрос ) Это важный вопрос, так как у меня начальная скорость 0.05 секунды до 10 секунд. Всё что от 0.5 секунды я могу определить на глаз, а остальное к сожалению нет. Глобальные переменные
Где запускаю таймер линии делаю
После перерисовки линии, то есть update()
Я устанавливаю таймер 2 секунды и вот какие значения выводятся, после того как линия пройдёт оборот: 1 1 1 1.25 1.2 1.16667 1.28571 1.25 1.22222 1.2 1.27273 1.25 1.23077 1.28571 1.26667 1.25 1.29412 1.27778 1.26316 1.3 1.28571 1.27273 1.30435 1.29167 1.28 1.26923 1.2963 1.28571 1.27586 1.3 1.29032 1.28125 1.30303 1.29412 1.28571 1.30556 1.2973 1.28947 1.30769 1.3 1.29268 1.28571 1.30233 1.29545 1.28889 1.30435 1.29787 1.29167 1.30612 1.3 1.29412 1.30769 1.30189 1.2963 1.29091 1.30357 1.29825 1.2931 1.30508 1.3 1.29508 1.30645 1.30159 1.29688 1.30769 1.30303 1.29851 1.30882 1.30435 1.3 1.29577 1.30556 1.30137 1.2973 1.30667 1.30263 1.2987 1.30769 1.3038 1.3 1.30864 1.30488 1.3012 1.30952 1.30588 1.30233 1.29885 1.30682 1.30337 1.3 1.30769 1.30435 1.30108 1.30851 1.30526 1.30208 1.30928 1.30612 1.30303 1.3 1.30693 1.30392 1.30097 1.30769 1.30476 1.30189 1.30841 1.30556 1.30275 1.30909 1.30631 1.30357 1.30088 1.30702 1.30435 1.30172 1.30769 1.30508 1.30252 1.30833 1.30579 1.30328 1.30894 1.30645 1.304 1.30952 1.30709 1.30469 1.30233 1.30769 1.30534 1.30303 1.30827 1.30597 1.3037 1.30882 1.30657 1.30435 1.30935 1.30714 1.30496 1.30986 1.30769 1.30556 1.31034 Такие значения возможны при задании таймера 2 секунды, если да то почему? |
|
|
Алексей1153 |
31.1.2013, 13:34
Сообщение
#20
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
1) повторю попрос - зачем делается такое точное задание скорости и зачем скорость измеРяется ?
От первого ответа зависит то, как будет задаваться эта скорость. 2) Что там за абстрактная такая линия - я до сих пор не знаю )) Что она у тебя делает - тоже. 3) Если так важна точная скорость, то перерисовка не должна иметь приоритет, а должна случаться когда это возможно. 4) с учётом пункта 3 - лог вывода времени, полученный в процедуре отрисовки, не имеет смысла |
|
|
Текстовая версия | Сейчас: 18.5.2024, 9:06 |