Подскажите профилировщик для программ написанных на FPC.
На дельфе пользовался AQTime, очень удобно, но платно, и FPC Не дружит.
Есть ли что-то подобное для FPC? Желательно фрищное и под виндой.
Спасибо.
Модератор: Модераторы
var
BottleNeckCounter1, BottleNeckCounter2: int64;
Остальное - 4 inc файла, вставляемых где надо когда надо:
старт
BottleNeckCounter1:=0;
BottleNeckCounter2:=0;
Asm
pushf
push eax
push edx
rdtsc
sub [BottleNeckCounter1], eax;
sbb [BottleNeckCounter1 + 4], edx;
pop edx
pop eax
popf
End;
начало измеряемого участка
Asm
pushf
push edx
push eax
rdtsc
sub [BottleNeckCounter2], eax;
sbb [BottleNeckCounter2 + 4], edx;
pop eax
pop edx
popf
End;
конец измеряемого участка
Asm
pushf
push edx
push eax
rdtsc
add [BottleNeckCounter2], eax;
adc [BottleNeckCounter2 + 4], edx;
pop eax
pop edx
popf
End;
стоп
Asm
pushf
push eax
push edx
rdtsc
add [BottleNeckCounter1], eax;
adc [BottleNeckCounter1 + 4], edx;
pop edx
pop eax
popf
End;
WriteLn('Bottleneck test result: ', round(100.0 * (BottleNeckCounter2 / BottleNeckCounter1)));
procedure SomeProc();
var
tickCount : Cardinal;
begin
tickCount := GetTickCount();
// Start doing something
.........................................
// Stop doing something
tickCount := GetTickCount() - tickCount;
// в tickCount имеем приблизительное время
// выполнения кода в системных тиках (они же миллисекунды)
end;
Для этих же целей можно использовать API функцию GetTickCount
// в tickCount имеем приблизительное время
// выполнения кода в системных тиках (они же миллисекунды)
, но увы для профилирования сложных многопоточных программ он не подходит
40 модулей, 400 классов, 50000 строк. И надо найти саые узкие места...
Просто при запуске надо посчитать сколько времени это занимает, и вычесть из результата расчета.
Cheb писал(а):40 модулей, 400 классов, 50000 строк. И надо найти саые узкие места...
Ой, мама.
Хотя... Я с помощью этой штуки рекурсивный алгоритм с кучей ветвлений мерил - во это было весело, штук n-цать бегин-эндов в код понавтыкал. Но сработало.
Cheb писал(а):Мой метод даёт результат сразу в процентах.
Вернуться в Free Pascal Compiler
Сейчас этот форум просматривают: Google [Bot] и гости: 2