Страница 1 из 1

Chromium пофилировщик, trace_event

Добавлено: 03 апр 2021, 17:18
Olej
Наиболее известный инструмент для анализа производительности JS скриптов на WWW-страницах.

Но не только (меня всё что с WW и JS не интересует, от слова "совершенно" :-D ).
См.
Использование фронтенда профилировщика Chrome в собственных проектах
29 августа 2017 в 11:52
Идея то проста:
- в собственный проект (GIT) встраивается компонент chromium / chromium / src / base / master / . / trace_event
- если вам удался предыдущий пункт (что совсем не тривиально), то в код вставляются макросы вида (их несколько больше а самом деле):

Код: Выделить всё

constexpr char TransferFrame[] = "vbs/dvbs/media/es/Demuxer"; // это произвольно определяемая "категория" события
...
TRACE_EVENT0(trace::TransferFrame, "transfer_frame");           // событие с 0 параметров
- имеются соответствующие TRACE_EVENT1 и TRACE_EVENT2 для 1 и 2 параметров передаваемых в событие ... и другие подобные макросы
- trace_event имеет API реализации команд (комментарий из файла <trace_event/api/include/CommandClient.h>):
Event Tracing CommandClient API handles the following commands:

- trace start [\<categories_pattern\>]
- trace stop [\<filename\> | --clear]
- trace save \<filename\>
- trace clear
- trace status

A "trace" string starting the command is a command that identifies CommandClient
handler running in the process.
- после команды trace start каждый достигнутый макрос TRACE_EVENT* пишет строку строго определённого синтаксиса в JSON файл...
- синтаксис определён здесь: Trace Event Format
Last updated: October 2016
- в любом браузере производном от Chromium вводим в URL строке: chrome://tracing/ (или для другого браузера, например: opera://tracing/ или brave://tracing/)
- и получаем автономный визуализатор результатов трассировки любого проекта.

Re: Chromium пофилировщик, trace_event

Добавлено: 03 апр 2021, 17:19
Olej
Olej писал(а):
03 апр 2021, 17:18
- в любом браузере производном от Chromium вводим в URL строке: chrome://tracing/ (или для другого браузера, например: opera://tracing/ или brave://tracing/)
- и получаем автономный визуализатор результатов трассировки любого проекта.
Chrome:
chrome_4.png
chrome_4.png (148.34 КБ) 1188 просмотров
Chromium:
chromium_1.png
chromium_1.png (86.5 КБ) 1188 просмотров
Opera:
opera_1.png
opera_1.png (68.75 КБ) 1188 просмотров
Brave:
brave_3.png
brave_3.png (176.88 КБ) 1188 просмотров

Re: Chromium пофилировщик, trace_event

Добавлено: 17 апр 2021, 00:18
Olej
Вот так выглядит профилирование одного из реальных проектов.