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

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

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

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

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

Откройте 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. Измерять времена выполнения кода для подсистем:

    1. Щелкнуть.

    2. В диалоговом окне Configuration Parameters выберите Measure task execution time, который обеспечивает метрики времени выполнения для задачи, сгенерированной от топ-модели rtwdemo_sil_topmodel.

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

    4. Задайте Workspace variable, например, executionProfile.

    5. От Save options выпадающий список выберите All data.

    6. Нажмите OK.

  4. Нажмите Settings. Под Coverage нажмите кнопку Coverage Collection прочь.

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

Симуляция генерирует переменную executionProfile в базовом рабочем пространстве MATLAB®.

Примечание

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

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

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

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

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

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

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

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

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

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

>> annotate(executionProfile)

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

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

>> report(executionProfile)

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

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

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

  • Задача представлена ступенчатой функцией rtwdemo_sil_topmodel_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;

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

>> executionProfile.Sections(5)
  ExecutionTimeCodeSection with properties:

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

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

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

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

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

Примечание

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

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

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

Имя задачи, топ-модели, подсистемы или блока 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), отчет обеспечивает сравнение метрик времени выполнения. На различия в метриках времени выполнения наносят цветную маркировку:

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

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

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

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

|

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

Больше о