Re: Профилировка win32 процесса
От: jedi Мухосранск  
Дата: 02.09.05 16:59
Оценка: 12 (2)
Здравствуйте, _DimOS, Вы писали:

_DO>Хочется сделать минимум профилировщик, простой и понятный.


Самый простой -> делаешь прогу, которая запускает твой процесс с флагом PROFILE_USER (функцией CreateProcess).
После того как процесс завершится, появляется файл profile.out с информацией которая тебе нужна.
В принципе так работает profiler.exe, который раньше поставлялся с Platform SDK. Последний раз я его видел
в составе MS Visual Studio 7 (в 7.1 его уже нет).

Знаю еще много разного про профайлеры , но через полчаса поезд — наконец-то долгожданный отпуск .
Вернусь через неделю, если интерес к теме не пропадет — спаршивай чего интересно .
Профилировка win32 процесса
От: _DimOS Россия  
Дата: 02.09.05 15:13
Оценка:
Хочется сделать минимум профилировщик, простой и понятный.
Как пользоваться символами из pdb — понятно.
Как измерять время — понятно.

Непонятно только как собирать статистику о количестве функций, получать уведомления о их вызовах.
Собственно хочу только собрать таблицу функций и суммарное время их выполнения, чтобы знать, где копать.
Один вариант профилировки — измерять rdtsc после каждого вызова функции, самый простой. А если функций/классов несколько сотен? Беда.
Поэтому и думаю о другом варианте.
Подскажите, п-ста идею. Где уже только не искал. Был же приличный профилировщик в 6 студии. Так убрали.
Заранее спасибо.
Re: Профилировка win32 процесса
От: MShura  
Дата: 02.09.05 15:37
Оценка:
_DO>Хочется сделать минимум профилировщик, простой и понятный.
_DO>Как пользоваться символами из pdb — понятно.
_DO>Как измерять время — понятно.

_DO>Подскажите, п-ста идею. Где уже только не искал. Был же приличный профилировщик в 6 студии. Так убрали.


Самый простой вариант без модификации профилируемого модуля:
Запускаем процесс под нами как под отладчиком.
Даем работать некоторое время, останавливаем, смотрим где находимся, формируем статистику
Даем работать некоторое время, останавливаем, смотрим где находимся, формируем статистику
Даем работать некоторое время, останавливаем, смотрим где находимся, формируем статистику
Даем работать некоторое время, останавливаем, смотрим где находимся, формируем статистику
Даем работать некоторое время, останавливаем, смотрим где находимся, формируем статистику
Даем работать некоторое время, останавливаем, смотрим где находимся, формируем статистику
...

В таком варианте точность * скорость = константа
Re[2]: Профилировка win32 процесса
От: MShura  
Дата: 02.09.05 17:34
Оценка:
J>Самый простой -> делаешь прогу, которая запускает твой процесс с флагом PROFILE_USER (функцией CreateProcess).
J>После того как процесс завершится, появляется файл profile.out с информацией которая тебе нужна.
J>В принципе так работает profiler.exe, который раньше поставлялся с Platform SDK. Последний раз я его видел
J>в составе MS Visual Studio 7 (в 7.1 его уже нет).

Супер!

Я правда не проверял.

MS как всегда:
В MSDN этот флаг не описан, в файле winbase.h он находится в одной логической секции с флагами для CreateProcess.
Re[2]: Профилировка win32 процесса
От: _DimOS Россия  
Дата: 05.09.05 06:44
Оценка:
J>Знаю еще много разного про профайлеры , но через полчаса поезд — наконец-то долгожданный отпуск .
J>Вернусь через неделю, если интерес к теме не пропадет — спаршивай чего интересно .

Это интересно. Ладно, через неделю. Счастливо отдохнуть.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.