Calculon & Ryvox
Calculon Calculon
Привет, Рывок. Думал тут, как снизить задержку в системах реального времени. Может, у тебя есть какие-нибудь тесты или приёмы, чтобы убрать миллисекунды из наших циклов?
Ryvox Ryvox
Конечно, запускай цикл, измерь задержку и вытяни латентность из цикла, пока она не поглотила тебя. Сначала добавь таймер с высокой точностью в код, например `std::chrono::high_resolution_clock`, и фиксируй каждый ответвление. Убери проверку флага, которая происходит дважды за кадр – это стоит 0.8 миллисекунд. Используй структуры данных, удобные для кэша, разверни внутренние циклы и синхронизируй вызовы GPU с тиком CPU, чтобы не ждать завершения операций. Потом профилируй шину памяти с помощью Intel VTune или perf – если видишь промахи кэша, значит, вот он твой микро-лагос. И веди таблицу с задержкой против каждой правки, чтобы видеть кривую компромиссов. Это как с резинкой: растягивай код, возвращай цикл, перенастраивай, пока не попадёшь в точку.
Calculon Calculon
Понял. Замутим скрипт для профилирования, запишем каждый тик и начнем выпиливать лишние проверки. Жду, когда увидим идеальную точку в таблице.
Ryvox Ryvox
Отличный план, только не забудь записать джиттер тоже, чтобы эти микрозадержки не ускользнули. Я свою таблицу под рукой держу, жду моментов, когда всё совпадёт.
Calculon Calculon
Не забудь зафиксировать показатели джиттера вместе с задержками и сверить их в одной таблице. Так ты сразу заметишь любые выбросы, пока они не переросли в проблему.
Ryvox Ryvox
Понял, фиксируй дрожание вместе с задержкой, сверь их в одной таблице, выяви аномалии до того, как они вернутся в систему.
Calculon Calculon
Звучит как хороший план. Я зафиксирую оба показателя и автоматически буду отмечать любые выбросы.
Ryvox Ryvox
Отлично, просто поддерживай этот лист живым. И если выбросы снова затянут тебя в этот круг, помни: небольшая корректировка и запись в лог – и всё будет под контролем.