crypt of decay - лёд тронулся, господа присяжные заседатели! [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

лёд тронулся, господа присяжные заседатели! [Jun. 15th, 2019|12:04 am]
Previous Entry Add to Memories Tell A Friend Next Entry
[Tags|]

всё-таки пересилил себя и начал пилить подсистему профилирования. давно надо было, но ужасно неохота же: нудно это. пока уговаривал себя начать — починил кучку багов и спланировал план запила новой подсистемы полиобъектов. полезно, конечно, но профайлеры сами себя не напишут.

почему не воспользоваться внешним инструментом, и не парить мозг? потому что неудобно и не всегда доступно. кроме того, что я хочу красивые графички в рилтайме, мне нужны профили в виде удобного для обработки файла на диске, иерархическая структура счётчиков, выборочное включение/выключение любого из них (с автоматической обработкой детей), и прочие мелкие приятности. и да — внешний инструмент не всегда доступен; это можно и два раза повторить. обычный игрок не будет париться установкой девтулзов и пересборкой игры с другими флагами, если я попрошу его сделать профиль, чтобы понять, почему у него игра тормозит.

сделал в виде большого кольцевого буфера, куда профайлеры пишут инфу. манагер профайлеров разруливает регистрацию, назначение каждому порядкого номера в буфере и так далее. дёшево, сердито, не надо в начале кадра бегать циклом по всем профайлерам и просить их переинититься, а в конце бегать и собирать с каждого данные.

при запуске ребёнка автоматически запускаются все родители, при стопе ребёнка родители стопятся. конечно, поддерживается рекурсивный старт/стоп, так что если родитель до запуска ребёнка был активен — то и останется активен. таким образом каждый родитель собирает совокупное время работы всех детей, а корневой профилер — время всего кадра.

кольцевой буфер можно тупо кидать в файл, когда номер следующего элемента врапнется, прямо как есть. ну, будет игра иногда заикаться, если запись в файл включена. потом сделаю для этого отдельный поток, пусть он пишет. на профиле это всё равно не скажется.

оверхэд на активирование/деактивирование профилера — один поход по указателю и одно условие, если профилинг неактивен. нормально, меня устраивает: это далеко не самый тормозной код в движке.

алсо, надо бы выложить очередной вендобилд перед Началом Великого Внедрежа.
Linkmeow!

Comments:
From:(Anonymous)
Date:June 15th, 2019 - 01:01 am
(Link)
Тебе недавно советовали на юньку пересесть и уровни туда же захватить. Ну и... что в итоге?
(Replies frozen) (Thread)
[User Picture]
From:[info]ketmar
Date:June 15th, 2019 - 01:22 am
(Link)
а в итоге ты идёшь нахуй.
(Replies frozen) (Parent)