1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
1 | |
Аппаратный таймер09.09.2019, 16:35. Показов 2731. Ответов 14
Метки нет (Все метки)
Есть ли не софтверные таймеры посчитать время выполнения кода внутри интервала 1\60 сек?
Windows XP Пробовал time.h грузит CPU, chrono.h не смог запустить. Неужели все они CPU?
0
|
09.09.2019, 16:35 | |
Ответы с готовыми решениями:
14
ЭЦП и аппаратный токен Аппаратный серийный номер флэш накопителя Аппаратный генератор случайных чисел! SOS Работа со звуком! (Ошибка) Аппаратный генератор случайных чисел! |
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
09.09.2019, 17:01 | 2 |
0
|
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
09.09.2019, 18:00 [ТС] | 3 |
QueryPerformanceCounter Наверно этот подходит. А нет ли примера заклинаний вызвать таймер парой строк?
Для time.h всего 4 строки и все работает…там же целые простыни текста+ не известно что подключать…
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
09.09.2019, 18:08 | 4 | |||||
Сообщение было отмечено Excalibur921 как решение
Решение
1
|
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
09.09.2019, 18:30 [ТС] | 5 |
0
|
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
09.09.2019, 18:34 [ТС] | 6 |
А можете сделать простой пример где замеряться время? Наверно там будет просто список *.h из-за юзания кусков Win.
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
09.09.2019, 18:36 | 7 |
0
|
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||||||
09.09.2019, 19:01 [ТС] | 8 | |||||
Работает . Но он похоже считает тоже тики процессора…он не аппаратный =(.
Сразу 15 % процессора скушал. Фактически тоже что time.h
Чтобы прикидывать какие модификации кода ускоряют, какие тяжелые т.е. анализ быстродействия. Но помыкался и похоже нужно вообще убрать все эти таймеры только нагружают CPU… О Может правильно делать просто ограничение на 60 FPS и добавлять сложность кода внутри кадра пока FPS не начнут падать? Также мне не нравиться вывод шрифта…какой-то он странный…похоже и он лаги добавляет.
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
09.09.2019, 19:04 | 9 |
Как может получение текущего времени нагружать процессор? У тебя где-то в другом месте проблема.
Добавлено через 33 секунды Покажи код.
0
|
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||||||
09.09.2019, 19:15 [ТС] | 10 | |||||
Максимально простой, движение точки(квадрата особенность opengl) по таймеру каждые 1\60 сек.
13-15% с таймером анализатор просто Диспетчер задач =) 3-4% без Правда и режим дебаг. Но всеравно...
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
09.09.2019, 19:19 | 11 |
у тебя std::cout там было, где таймер?
Добавлено через 38 секунд Вынеси QueryPerformanceFrequency за цикл, оно никогда не меняется Добавлено через 27 секунд И не используй там std::cout, это она тормозит Добавлено через 1 минуту Ну, и не надо ничего замерять в дебаге, замеряй в релизе
0
|
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
09.09.2019, 20:02 [ТС] | 12 |
Наверно внутренне реализован просто подсчет тиков процессора, отсюда и требования
LARGE_INTEGER в которые по сути пишет много раз бесполезного мусора нагружая CPU. Наверно вот этот правильный, смотря как его сделали, аппаратно или софтверно. https://docs.microsoft.com/ru-... dia-timers “The multimedia timer services allow an application to schedule periodic timer events — that is, the application can request and receive timer messages at application-specified intervals.” Вот если его настроить на отсчеты допустим 100 отсчетов внутри интервала 1\60 сек то это уже намного меньше должно нагружать CPU. Другое вопрос что это не моего уровня hello world =). Понятия не имею…я вообще незнаю как вы среди тех простыней кода нашли 5 строки ответа. Добавлено через 7 минут Закоментил только строчки для показа отсчета времени. Кстати…может. А как тогда смотреть переменные? А как мне нубу смотреть переменные во время запуска? Добавлено через 6 минут Вроде как можно писать возле *.h using namespace std; и не добовлять его потом…ну то такое. Значит нужно записывать внутри цикла эти огромные LARGE_INTEGER в другую переменную(выглядит очень странно) затем делить на количество FPS… ИМХО это неправильное решение. Тут нужен переодический таймер который будет прибавляеть переменную (тикать) внутри временного интервала 1\60 сек например ну раз 1000 или хотяб 100. Уже будет почти аппаратный замер. Добавлено через 23 минуты Может тогда вообще правильно выбросить таймер glut? По идее этот мультимедиа таймер можно настроить на 1000 тиков внутри 1\60 сек. Тогда вся прога будет читать из одного регистра тики. Насчитали 1000 тиков обновили 1 кадр это 1\60 сек, посчитали количество этих тиков за которое выполнился код получили быстродействие кода. Посчитали 1000*60 получили секунду. Обновили показ FPS. Сразу 3 зайца. Вот только я Хз как собрать это все в кучу.
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
09.09.2019, 21:21 | 13 |
Пиши в файл, а ещё лучше выводи их в другом потоке, чтоб не тормозить основной. Как-то надо понимать что работает медленно, а что быстро, если уж взялся.
Тем более, 1/60 секунды, это вообще ни о чём, а ты умудряешься просирать на таймере. LARGE_INTEGER это 64-битное целое, оно ничего не нагружает, у тебя процессор 64-бита, это его естественный тип. QueryPerformanceCounter возвращает значение системного счётчика, у которого разрешение QueryPerformanceFrequency в секунду. Мультимедиа-таймеры вызывают их же и вызывают.
0
|
2376 / 834 / 317
Регистрация: 10.02.2018
Сообщений: 1,968
|
|
09.09.2019, 22:12 | 14 |
Делал как-то замеры производительности для графики, пару комментариев могу вставить.
1) QueryPerfomance не может съедать так много, он очень быстр. 2) Вывод текста может быть очень накладным, так что практичнее будет использовать лог или отладку. 3) Отдельные графические функции работают асинхронно. Из-за этого некоторые фрагменты кода нет смысла измерять. Другие фрагменты кода могут финализировать рендеринг и осуществлять графический вывод с ожиданием смены кадров. Измерение таких операций то же может не иметь особого смысла. 4) Можно настроить работу графики на неограниченный фреймрейт без вертикальной синхронизации. Да, некоторые кадры будут рендерится в холостую без реального вывода. Зато по реальному фреймрейту можно будет оценить производительность рендеринга.
0
|
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
10.09.2019, 20:15 [ТС] | 15 |
Выходит это правильно и проще всего. Значит в этом моя алгоритмическая ошибка, рулит не экстраполяция сколько можно теоретически отрендерить кадров на основе замера времени кода, а сколько получается фактически. Тогда и эти таймеры не нужны.
0
|
10.09.2019, 20:15 | |
10.09.2019, 20:15 | |
Помогаю со студенческими работами здесь
15
Таймер должен через время положить файл на БД. [Таймер] Kelogger аппаратный Аппаратный фаервол Аппаратный фрайвол Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |