ProfilerClear
| ProfilerClear (Функции отладки) | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
Функция очищает данные, накопленные профайлером. См. ProfilerStart, Встроенный отладчик, Встроенный профайлер.
Синтаксис
ProfilerClear()
Примеры
Function Square(a)
Exit a*a;
EndFunction
//Включить режим отладки
DebuggingRights(1);
//Очистить предыдущие результаты профилирования
ProfilerClear;
//Включить профайлер
ProfilerStart;
//Находим разницу во времени выполнения функции разными способами
For i:=1 to 100000 Do
Square(i);
EndDo;
For i:=1 to 100000 Do
ExecuteFunction("Square",1,i);
EndDo;
//Останавливаем профайлер
ProfilerStop;
Период:=dbgHRPCCurrent();
For i:=1 to 100000 Do
Exec("Square(i)");
EndDo;
Период:=dbgHRPCGetPeriod(Период)/1000000;
Message("Выполнение Exec: "+Период+" мс.");
//Вызываем окно отладчика для просмотра результатов профилирования
DebugBreak;
//Функция DebugBreak не должна быть последней в модуле
Message("Тест выполнен успешно");
//Для i5 на Windows 7 результаты профилирования были следующими:
//* Прямой вызов функции занял 223 мс.
//* Использование функции ExecuteFunction заняло 296 мс.
//* Компиляция текста и вызов функции заняли 1210 мс.
// Комментарий: компиляция и выполнение уменьшает скорость работы профайлера, так как увеличивается количество исходных текстов в массиве, из которого производится поиск при профилировании
// Для массива текстов размером в ~10000, профайлер замедляет исполнение примерно в 1.4 раза по сравнению с работой профайлера с пустым массивом (коэффициент можно найти, если переставить местами
// циклы, включить цикл Exec в профилирование и сравнить результаты). Поэтому, время исполнения последнего цикла было найдено без помощи профайлера.
//Вывод: компиляция текста осуществляется сравнительно быстро для небольших текстовых фрагментов, но такое исполнение примерно в 5 раз медленнее, чем вызов функции напрямую.
// Поэтому для случаев, когда это возможно, выгоднее использовать функцию ExecuteFunction.
//Время компиляции Exec нивелируется для больших текстов вызываемых небольшое количество раз (обычный способ исполнения скрипта).