лёд тронулся, господа присяжные заседатели! |
[Jun. 15th, 2019|12:04 am] |
всё-таки пересилил себя и начал пилить подсистему профилирования. давно надо было, но ужасно неохота же: нудно это. пока уговаривал себя начать — починил кучку багов и спланировал план запила новой подсистемы полиобъектов. полезно, конечно, но профайлеры сами себя не напишут.
почему не воспользоваться внешним инструментом, и не парить мозг? потому что неудобно и не всегда доступно. кроме того, что я хочу красивые графички в рилтайме, мне нужны профили в виде удобного для обработки файла на диске, иерархическая структура счётчиков, выборочное включение/выключение любого из них (с автоматической обработкой детей), и прочие мелкие приятности. и да — внешний инструмент не всегда доступен; это можно и два раза повторить. обычный игрок не будет париться установкой девтулзов и пересборкой игры с другими флагами, если я попрошу его сделать профиль, чтобы понять, почему у него игра тормозит.
сделал в виде большого кольцевого буфера, куда профайлеры пишут инфу. манагер профайлеров разруливает регистрацию, назначение каждому порядкого номера в буфере и так далее. дёшево, сердито, не надо в начале кадра бегать циклом по всем профайлерам и просить их переинититься, а в конце бегать и собирать с каждого данные.
при запуске ребёнка автоматически запускаются все родители, при стопе ребёнка родители стопятся. конечно, поддерживается рекурсивный старт/стоп, так что если родитель до запуска ребёнка был активен — то и останется активен. таким образом каждый родитель собирает совокупное время работы всех детей, а корневой профилер — время всего кадра.
кольцевой буфер можно тупо кидать в файл, когда номер следующего элемента врапнется, прямо как есть. ну, будет игра иногда заикаться, если запись в файл включена. потом сделаю для этого отдельный поток, пусть он пишет. на профиле это всё равно не скажется.
оверхэд на активирование/деактивирование профилера — один поход по указателю и одно условие, если профилинг неактивен. нормально, меня устраивает: это далеко не самый тормозной код в движке.
алсо, надо бы выложить очередной вендобилд перед Началом Великого Внедрежа. |
|
|
Comments: |
From: | (Anonymous) |
Date: | June 15th, 2019 - 01:01 am |
---|
| | | (Link) |
|
Тебе недавно советовали на юньку пересесть и уровни туда же захватить. Ну и... что в итоге?
| From: | ketmar |
Date: | June 15th, 2019 - 01:22 am |
---|
| | | (Link) |
|
а в итоге ты идёшь нахуй. | |