Войти

Показать полную графическую версию : Возможно ли отследить этапы отрисовки окна?


Avatar-Lion
12-01-2020, 00:35
Возник такой вопрос: есть ли возможность пошагово увидеть и разложить по полочкам все этапы отображения окна? Например, я кликаю на значок "Компьютер", а мне в окошке высвечивается лог типа:
- Запрос к файловой системе: 50 миллисекунд
- Запрос разрешений: 20 миллисекунд
- Запрос твиков из реестра: 15 миллисекунд
- Ожидание ответа от сетевого диска: 800 миллисекунд
- Отправка задачи на отрисовку окна видеокарте: 5 миллисекунд
- Ожидание картинки от видеокарты: 100 миллисекунд
- Показ готового окна

Хочется просто заиметь инструмент, который покажет в каких моментах возникает узкое место, потому как штатный Монитор ресурсов показывает нагрузку на узлы (CPU, HDD...) в процентах от различных exe'шников, но не проливает свет на то, какой из этапов съедает больше всего времени.

Iska
12-01-2020, 07:47
Avatar-Lion, не встречал такого.

В качестве эксперимента можете поиграться с Process Monitor'ом.

P.S. Общий смысл примерно понятен, но вот выбор:
Например, я кликаю на значок "Компьютер" »
явно неудачен: Проводник многие задачи отрабатывает асинхронно.

Grabber2006
12-01-2020, 09:44
Для обычных приложений эти параметры недоступны, т.к. они просто получают от системы через WinAPI handle готового окна без какого-либо разделения на этапы.
Т.е. всем занимается непосредственно Windows. Если в неё не встроены соответствующие функции, то узнать временные затраты никак нельзя.




© OSzone.net 2001-2012