времен выполнения ?
rdtsc+адрес ф-ии
Эпилоги тоже надо патчить. И учитывать вход и выход
Как по мне - то не надо Но я чётко все равно не могу представить сейчас... пока делать не начнёшь - ничего и не понятно до конца Компилятор... не знаю, если разбираться во внутренностях хорошо то можно наверное, пока-что мне это сложнее кажется gprof в FPC только для 32 бит Ну кстати можно посмотреть, что он там делает Сегодня немного читал,вроде как он семплирующий, а не такой как я с DWARFом задумал
Время выполнения процедуры от пролога до эпилога. Состоит из чистого времени в данной процедуре плюс времени в внешних вызванных из этой
Время функции отдельно без детей и с детьми - это можно вычислить уже после, в тулзе для просмотра данных Тоже самое с графом выполнения - он будет строится на базе .... хотя вот тут да... чето сложно тогда пока снова не понимаю как делать т.к. найти конец ф-ии не знаю как... есть ли эта информация в DWARF о размере функции наверное есть... но опять же может ли выход произойти в середине функции? может наверное
Есть но не для всех функций (по крайней мере в fpc так) хотя вроде как по стандарту должно быть у всех включая noreturn функции
Форунуть и оживить lazprofiler?
Мне оно не нравится тем, что оно в исходники лезет
Это снимает очень много проблем. При наличии скв - пусть лезет. Тем более если в Иде встроено
Хм, ну вот gprof ведь как-то вычисляет профиль по одному вызову только в начале функции https://sourceware.org/binutils/docs/gprof/Implementation.html Кстати, пропатчить компилятор чтобы он начал вставлять вызов профилирующей функции в начале каждой функции - оказалось не сложно Но это я ещё не тестил нормально, пока-что вызов пустой функции
хз. это както не бьетяс я с моими фантазиями о профилировании
Обсуждают сегодня