ProfilerClear

From SunFlurry wiki
Revision as of 08:52, 7 February 2021 by Admin (talk | contribs) (1 revision imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  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 нивелируется для больших текстов вызываемых небольшое количество раз (обычный способ исполнения скрипта).