Просмотрите и сравните времена выполнения кода

Вы запускаете программное обеспечение в цикле (SIL) или процессоре в цикле (PIL) симуляция, которая производит метрики времени выполнения для задач и функций в вашем сгенерированном коде. Во время симуляции можно использовать Инспектора Данных моделирования, чтобы наблюдать переданные потоком времена выполнения. В конце симуляции вы можете:

  • Просмотрите метрики времени выполнения для профилируемого компонента модели.

  • Откройте отчет метрик времени выполнения для всех профилируемых компонентов. Через значки отчета можно просмотреть, например, профилируемую секцию кода и распределение времени выполнения для каждой профилируемой функции.

  • Используйте Инспектора Данных моделирования, чтобы построить и сравнить времена выполнения от различных симуляций.

Запустите SIL симуляцию, которая генерирует метрики времени выполнения

Откройте rtwdemo_sil_topmodel модель, которая имеет две подсистемы CounterTypeA и CounterTypeB.

Чтобы запустить SIL симуляцию, которая генерирует метрики времени выполнения на вкладке SIL/PIL:

  1. В разделе Mode выберите SIL/PIL Simulation Only.

  2. В разделе Prepare задайте эти настройки:

    1. System Under TestTop model

    2. SIL/PIL ModeSoftware-in-the-Loop (SIL)

  3. Измерять времена выполнения кода для подсистем, в разделе Prepare:

    1. Нажмите Settings.

    2. Под Profiling:

      • Нажмите кнопку Task Profiling на. Это действие выбирает параметр конфигурации Measure task execution time, который обеспечивает метрики времени выполнения для задачи, сгенерированной от топ-модели rtwdemo_sil_topmodel.

      • Нажмите кнопку Save Options, пока она не отобразит ALL DATA. Это действие установило параметр конфигурации Save options на All data.

      • Нажмите кнопку Functions, пока она не отобразит COARSE. Это действие устанавливает параметр конфигурации Measure function execution times на Coarse (referenced models and subsystems only), который обеспечивает метрики времени выполнения для функций, сгенерированных от подсистем CounterTypeA и CounterTypeB.

    3. Под Coverage нажмите кнопку Coverage Collection прочь, которая отключает анализ покрытия кода.

  4. Чтобы просмотреть переданные потоком времена выполнения во время симуляции, откройте Инспектора Данных моделирования. В разделе Results щелкнуть.

  5. В разделе Run нажмите Run SIL/PIL.

В базовом рабочем пространстве MATLAB® симуляция генерирует переменную с именем по умолчанию, executionProfile. Можно задать альтернативное имя через параметр конфигурации Workspace variable.

Примечание

Если вы устанавливаете флажок Data Import/Export> Single simulation output, симуляция создает переменную в вашем заданном Simulink.SimulationOutput объект.

Когда симуляция завершена, профилируемые компоненты модели окрашены в синий. Чтобы просмотреть метрики времени выполнения для профилируемого компонента, кликните по компоненту. Например, подсистема CounterTypeB.

Окно экрана также имеет ссылки на:

  • Полный профильный отчет, который обеспечивает метрики времени выполнения для всех профилируемых секций кода.

  • Профилируемая секция кода в отчете генерации кода.

  • Инспектор Данных моделирования, который позволяет вам строить и сравнивать измерения времени выполнения для профилируемой секции кода.

  • Распределение времени выполнения для профилируемой секции кода.

  • Круговые диаграммы, которые показывают относительные времена выполнения вызывающей стороны и вызванных функций

Для топ-модели SIL или PIL симуляции, Редактор Simulink® фон также окрашен в синий. Когда вы кликаете по фону, окно экрана показывает метрики времени выполнения для задач топ-модели.

Если вы закрываете модель или окно экрана, можно вновь открыть цветную модель и окно экрана с этой командой линии:

>> annotate(executionProfile)

Отчет профилирования выполнения кода

В конце симуляции можно открыть этот отчет через метрическое окно экрана или с этой командой линии:

>> report(executionProfile)

Часть 1 предоставляет сводные данные. Часть 2 содержит информацию о профилируемых секциях кода. Расширьте и сверните профилируемые разделы в части 2 путем нажатия [+] и [–] соответственно. Эта диаграмма показы полностью расширила разделы.

Отчет содержит измерения времени для:

  • Инициализация модели функционирует initialize.

  • Задача представлена ступенчатой функцией step [0.1 0].

  • Функции сгенерировали от подсистем CounterTypeA и CounterTypeB.

Можно перейти к профилируемой секции кода в представлении Generated Code Отчета Генерации кода. В Отчете Профилирования Выполнения кода, на строке секции кода, кликают по значку. Например, если вы кликаете по значку для rtwdemo_sil_topmodel_initialize задача, вы видите зонды измерения вокруг сайта вызова в приложении SIL.

Если вы кликаете по значку для функции, сайт вызова подсвечен.

Из Отчета Профилирования Выполнения кода можно проследить компонент модели, который производит набор метрик. Например, в столбце Section, если вы нажимаете CounterTypeA гиперссылка, Редактор Simulink идентифицирует подсистему.

По умолчанию отчет отображает время в наносекундах (10-9 секунд). Можно задать формат цифрового дисплея и единица измерения времени. Например, чтобы отобразить время в микросекундах (10-6 секунд), используйте следующую команду:

report(executionProfile,...
         'Units', 'Seconds', ...
         'ScaleFactor', '1e-06', ...
         'NumericFormat', '%0.3f')

Отчет отображает время в секундах, только если таймер калибруется, то есть, количество меток деления таймера в секунду известно. На машине Windows® программное обеспечение определяет это значение для SIL симуляции. На машине Linux® калибруйте таймер вручную. Например, если ваша скорость процессора составляет 1 ГГц, задайте количество меток деления таймера в секунду:

executionProfile.TimerTicksPerSecond = 1e9;

Просмотреть метрики времени выполнения для задачи или функции в Командном окне, на соответствующей строке, нажатии кнопки.

>> out.get('executionProfile').Sections(5)
  ExecutionTimeCodeSection with properties:

                            Name: 'CounterTypeA'
                          Number: 5
            ExecutionTimeInTicks: [1×101 uint64]
                 SelfTimeInTicks: [1×101 uint64]
           TurnaroundTimeInTicks: [1×101 uint64]
       TotalExecutionTimeInTicks: 24332
            TotalSelfTimeInTicks: 24332
      TotalTurnaroundTimeInTicks: 24332
     MaximumExecutionTimeInTicks: 502
     MaximumExecutionTimeCallNum: 10
          MaximumSelfTimeInTicks: 502
          MaximumSelfTimeCallNum: 10
    MaximumTurnaroundTimeInTicks: 502
    MaximumTurnaroundTimeCallNum: 10
                        NumCalls: 101
          ExecutionTimeInSeconds: [1×101 double]
                            Time: [101×1 double]

Чтобы отобразить измеренные времена выполнения в Инспекторе Данных моделирования, кликните по значку. Используйте Инспектора Данных моделирования, чтобы управлять и сравнить графики от различных симуляций.

Чтобы отобразить распределение времени выполнения, кликните по значку.

В этом примере, чтобы создать гистограмму, программное обеспечение использует эти команды:

section=executionProfile.Sections(5);
data=section.ExecutionTimeInSeconds;
histogram(data, 30,'Normalization','probability');
Программное обеспечение создает гистограмму, только если количество вызовов больше того.

Примечание

Чтобы наблюдать, как секции кода вызываются по временной шкале выполнения, используйте timeline функция.

Если сгенерированный код для вашей модели содержит вложенные функции, симуляция генерирует круговые диаграммы, которые показывают относительные времена выполнения вызывающей стороны и вызванных функций. Чтобы отобразить круговые диаграммы, кликните по значку для функции вызывающей стороны. Например, step [0.1 0].

Круговые диаграммы, которые отображают средние и максимальные распределения времени выполнения, могут помочь вам идентифицировать функции, которые являются узкими местами в выполнении кода.

Следующая таблица описывает информацию, предоставленную в профилях секции кода.

СтолбецОписание
Раздел

Имя задачи, топ-модели, подсистемы или блока Model. Щелкните по ссылке, чтобы перейти к модели.

С задачей период расчета и демонстрационное смещение перечислены рядом с именем задачи. Например, rtwdemo_sil_topmodel_step [0.1 0] указывает, что период расчета составляет 0,1 секунды, и демонстрационное смещение 0.

Максимальный Срок выполнения работы (Simulink Real-Time™ и пакеты поддержки в режиме реального времени режим) Самое долгое время между началом и концом секции кода. Включает время вытеснения.
Среднее время цикла (Simulink Real-Time и пакеты поддержки в режиме реального времени режим) Среднее время между началом и концом секции кода. Включает время вытеснения.
Максимальное время выполненияСамое долгое время между началом и концом секции кода.
Среднее время выполненияСреднее время между началом и концом секции кода.
Максимум сам времяМаксимальное время выполнения, исключая время в дочерних разделах.
Среднее значение сам времяСреднее время выполнения, исключая время в дочерних разделах.
ВызовыКоличество вызовов секции кода.

Значок, по которому вы кликаете, чтобы видеть профилируемую секцию кода в представлении Generated Code Отчета Генерации кода. Секция кода может быть задачей или функцией.

Заданная переменная рабочей области, например, executionProfile, должен присутствовать в базовом рабочем пространстве.

Значок, по которому вы кликаете, чтобы отобразить профилируемую секцию кода в Командном окне. Эквивалентный выполнению команды executionProfile. Разделы (i).

Заданная переменная рабочей области, например, executionProfile, должен присутствовать в базовом рабочем пространстве.

Значок, по которому вы кликаете, чтобы отобразить измеренные времена выполнения с Инспектором Данных моделирования.

Заданная переменная рабочей области, например, executionProfile, должен присутствовать в базовом рабочем пространстве.

Значок, по которому вы кликаете, чтобы отобразить распределение времени выполнения для профилируемой секции кода.

Заданная переменная рабочей области, например, executionProfile, должен присутствовать в базовом рабочем пространстве.

Значок, по которому вы кликаете, чтобы отобразить круговые диаграммы, которые показывают относительные времена выполнения вызывающей стороны и вызванных функций в сгенерированном коде.

Чтобы помочь вам решить, можно ли запустить сгенерированный код на целевом компьютере, часть 3 отчета профилирования выполнения кода предоставляет информацию о рабочей нагрузке центрального процессора:

  • Среднее и максимальное процессорное время требуется каждой задачей в течение периода расчета.

  • Общее использование ЦП в период расчета.

Программное обеспечение вычисляет процент процессорного времени, присвоенного задаче путем деления времени выполнения задачи шагом расчета.

Программное обеспечение генерирует CPU Utilization, только если количество меток деления таймера в секунду задано.

Сравните эффективность времени выполнения кода с базовой линией

Можно создать отчет профилирования выполнения кода, который сравнивает эффективность сгенерированного кода против эффективности ссылочной версии. Например, предположите, что вы хотите использовать текущие метрики времени выполнения в executionProfile как базовая линия для rtwdemo_sil_topmodel.

  1. В браузере Рабочей области переименуйте executionProfile к executionProfileBaseline.

  2. Запустите другую SIL симуляцию.

  3. Чтобы создать отчет, который сравнивает последнюю эффективность с базовой линией, в Командном окне, запуске:

    report(executionProfile,'baseline', executionProfileBaseline)

В части 3 (Comparison with Baseline Performance) и часть 4 (CPU Utilization), отчет обеспечивает сравнение метрик времени выполнения. На различия в метриках времени выполнения наносят цветную маркировку:

  • Красный — увеличение во времена выполнения или использование ЦП.

  • Зеленый — уменьшение во времена выполнения или использование ЦП.

  • Черный — Никакое изменение.

Смотрите также

|

Связанные примеры

Больше о