Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Профилировщик  [new]
Damir_85
Member

Откуда:
Сообщений: 189
Здравствуйте.
Подскажите пожалуйста профилировщик. Если он зависит от версии Дельфи то у меня Embarcadero 2010.
Дело в том, что я никогда с такими программами не работал. Недавно вот узнал что удобно сравнивать различные алгоритмы по времени выполнения кода.
30 янв 18, 20:05    [21152438]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59461
AQTime, например.

Профайлеры не раз обсуждались, поищите.

Posted via ActualForum NNTP Server 1.5

30 янв 18, 20:40    [21152498]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
rgreat
Member

Откуда:
Сообщений: 4584
Гаджимурадов Рустам,

А кроме AQTime разве адекватные профайлеры есть?

А то AQTime стоит откровенно негуманно, да и DRM там уродская.
30 янв 18, 20:50    [21152514]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3936
Кроме AQTime для делфи ничего визуального не помню, чтобы было -- с этой областью у делфи совсем всё плохо относительно других языков. Есть еще бесплатные текстовые профилировщики (которые логи пишут со статистикой). Но это не айс.
30 янв 18, 20:57    [21152529]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
rgreat
Member

Откуда:
Сообщений: 4584
Ну пожалуй сам себе отвечу.

Сейчас полазил еще раз по старым нычкам и таки нашел работающий.

Из полноценных (не Sample) провайдеров есть только этот:

https://github.com/andremussche/asmprofiler

И эта версия даже работает!

Несколько извращенский способ инициализации его, но в целом ничего сложного.

К сообщению приложен файл. Размер - 142Kb
30 янв 18, 21:22    [21152589]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
rgreat
Member

Откуда:
Сообщений: 4584
..

К сообщению приложен файл. Размер - 147Kb
30 янв 18, 21:22    [21152590]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
rgreat
Member

Откуда:
Сообщений: 4584
Работает так:

1. Кладем в каталог с экзешником его DLL.
2. Юзаем _uAsmProfDllLoader.pas
3. Пишем код:

if _uAsmProfDllLoader.LoadProfilerDll then // Инициализация
  _uAsmProfDllLoader.ShowProfileForm; // открытие визального интерфейса

_uAsmProfDllLoader.StartProfiler(False); // начало сканирования профайлером структуры(!) вашего кода (не сам профайлинг!)
Repaint; // <- вызов моей функции, работу содержимого которой я хочу оттестировать.
_uAsmProfDllLoader.StopProfiler;  // конец сканирования структуры кода

// Профайлер только теперь готов к собственно профайлингу.



4. Дальше выбираем в интерфейса какие из насканированных юнитов и функций вы хотите профайлить.
5. Клик на старт профайлера.
6. Работаем в ПО как обычно.
7. Клик на стоп профайлера.
8. Жмакаем на отчет.
30 янв 18, 21:32    [21152605]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
Damir_85
Member

Откуда:
Сообщений: 189
я еще вот натолкнулся на Sampling Profiler (https://www.delphitools.info/samplingprofiler)
вроде тоже с каким-то интерфейсом. Что нибудь можете сказать?
Потом мне на первое время в основном будет интересно по времени сравнивать, поэтому пока хотелось бы что-нибудь бесплатное)
31 янв 18, 11:11    [21153566]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
Василий №2
Guest
Damir_85
я еще вот натолкнулся на Sampling Profiler (https://www.delphitools.info/samplingprofiler)
вроде тоже с каким-то интерфейсом. Что нибудь можете сказать?
Потом мне на первое время в основном будет интересно по времени сравнивать, поэтому пока хотелось бы что-нибудь бесплатное)

Юзаю его, неплохой. Пригождается для оценки быстродействия/тормозов рабочего цикла в целом. Для сравнения производительности отдельных функций неохота было осваивать сторонний инструмент, так что сделал свой бенчмаркер на примитивном gettickcount, погрешности сглаживаю большим количеством итераций.
31 янв 18, 11:25    [21153629]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
Василий №2
Guest
Василий №2
Damir_85
я еще вот натолкнулся на Sampling Profiler (https://www.delphitools.info/samplingprofiler)
вроде тоже с каким-то интерфейсом. Что нибудь можете сказать?
Потом мне на первое время в основном будет интересно по времени сравнивать, поэтому пока хотелось бы что-нибудь бесплатное)

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

Добавлю. Работает только до XE2, но на D7 выдает какие-то совсем неадекватные результаты.
1 фев 18, 10:10    [21156636]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
rdtsc
Guest
Damir_85
интересно по времени сравнивать, поэтому пока хотелось бы что-нибудь бесплатное)
для сравнения по времени исполнения всего алгоритма вполне достаточно QueryPerformanceFrequency/QueryPerformanceCounter
совершенно бесплатен )) и гораздо точнее gettickcount
1 фев 18, 11:33    [21157015]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
AWSVladimir
Member

Откуда:
Сообщений: 858
rdtsc
QueryPerformanceFrequency/QueryPerformanceCounter

Не знаю, я отказался, так как сами вызовы намного прожоливей GetTicCount.
GetTicCount - вообще самая менее ресурсоемкая ф-я.
1 фев 18, 11:57    [21157091]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
Damir_85
Member

Откуда:
Сообщений: 189
Я сейчас в Sampling Profiler загрузил .exe файл. В коде написал просто цикл for от единицы до миллиона, а внутри цикла просто некая переменная суммируется с переменной цикла. Хотел время посмотреть. Он вывел окошко со следующей информацией: Neither TD32. MAP noj JDB information were found, only rough profiling information was gathered.
Показал в таблице какие то проценты для kernel32.dll and user32.dll. А где время работы?)
Может в сети на русском документация на него есть, то что с ним справка идет, не очень подробно.
Кстати я выбрал в списке дельфи ХЕ. (хотя у меня 2010 Embarcadero, Егот тоже кстати пробовал. Выше было написано, что работает только до ХЕ2, хотя в списке имеется и XE4. Я скачал версию 1.8.1)
1 фев 18, 12:18    [21157194]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
Damir_85
Member

Откуда:
Сообщений: 189
а кстати приложение консольное сделал, без всяких форм
1 фев 18, 12:28    [21157230]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
Василий №2
Guest
Да, попутал, до XE4.
Ему для работы нужен map файл либо полная отладочная инфа в экзешнике
1 фев 18, 13:20    [21157427]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
Damir_85
Member

Откуда:
Сообщений: 189
Василий №2
Да, попутал, до XE4.
Ему для работы нужен map файл либо полная отладочная инфа в экзешнике

а как отладочную информацию в экзешник записать ? и что за map-файл?
Не могли бы пример привести как это сделать?
1 фев 18, 13:26    [21157446]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
Damir_85
Member

Откуда:
Сообщений: 189
вернее, не в экзешник, а как я понял в код что то нужно дописать или директивы какие то выставить
1 фев 18, 13:27    [21157451]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
Tactical Nuclear Penguin
Member

Откуда: холодно тут
Сообщений: 2596
Damir_85
Василий №2
Да, попутал, до XE4.
Ему для работы нужен map файл либо полная отладочная инфа в экзешнике

а как отладочную информацию в экзешник записать ? и что за map-файл?
Не могли бы пример привести как это сделать?


project options - delphi compiler - linking - map file - detailed
1 фев 18, 13:33    [21157472]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
AWSVladimir
Member

Откуда:
Сообщений: 858
Tactical Nuclear Penguin,

+ JDB - это эксперт джедаевский, который отладочную инфу в эксешник линкует.
1 фев 18, 18:05    [21158561]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
Damir_85
Member

Откуда:
Сообщений: 189
Спасибо
2 фев 18, 18:20    [21161579]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10642
rgreat
И эта версия даже работает!
Сейчас затестил. Попытался профилировать COM-сервер - болт. Пришлось лепить костыли и делать запускаемый exe без COM-вызовов
10 окт 18, 20:04    [21700967]     Ответить | Цитировать Сообщить модератору
 Re: Профилировщик  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12559
Prodelphi profiler
10 окт 18, 20:40    [21700991]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить