Difference between revisions of "ProfilerClear"
m (1 revision imported) |
|
(No difference)
|
Latest revision as of 07:52, 7 February 2021
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 нивелируется для больших текстов вызываемых небольшое количество раз (обычный способ исполнения скрипта).