![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Профайлер для Delphi
DelphiLexx © (2006-02-06 13:36:00)Подскажите пожалуйста где можно взять профайлер для Delphi2005.
Профайлер(точно не знаю как на англ. пишется) - штуковина позволяющая определять сколько времени уходит на выполнение каждой процедуры в рабочем коде.
Игорь Шевченко (2006-02-06 15:27:00) [1]kaZaNoVa © (06.02.06 14:54) [2]
"Если у тебя есть фонтан, заткни его - дай отдохнуть и фонтану"
(с) Козьма Прутков
drpass (2006-02-06 15:23:00) [2]
> kaZaNoVa © (06.02.06 14:54) [2]
Жуть. А как оценить эффективность выполнения вложенных в "измеряемую функцию" подпрограмм? То-то же. Все-таки лучше профилировщик ;-)
kaZaNoVa (2006-02-06 14:54:00) [3]пример уникальной программы по измерению времени:
program Project1;
uses SysUtils, windows;
var
k, n, h, p: int64;
t1: Cardinal;
PriorityClass, Priority: Integer;
{$R *.res}
procedure taimer(a: boolean);
begin
if a then begin
p := gettickcount; QueryPerformanceFrequency(h); QueryPerformanceCounter(k);
end else begin
QueryPerformanceCounter(n);
MessageBox(0, 'Ready', Pchar(Inttostr(gettickcount - p) + ' ms (' + (Floattostr(round(10000000 * (n - k) / h) / 10000)) + ') ms'), 0);
end; end;
begin
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
taimer(true);
for t1 := 1 to 1000 do sleep(0); //тут измеряемая функция
taimer(false);
end.
Игорь Шевченко (2006-02-06 14:26:00) [4]искать gpprofile