Профилировщик TLC

Используя профилировщика

Профилировщик TLC собирает статистические данные синхронизации для кода TLC. Это собирает время выполнения для функций, скриптов, макросов и встроенных функций. Эти результаты становятся основанием отчетов HTML, которые идентичны в формате отчетам профилирования MATLAB®. Путем анализирования доклада можно идентифицировать узкие места в коде, которые заставляют генерацию кода занять больше времени.

На диалоговом окне Configuration Parameters выберите Profile TLC (Simulink Coder). Примените свои изменения и нажмите Ctrl+B.

В конце процесса TLC процесс сборки создает сводные данные HTML и связанные файлы.

Анализирование доклада

Отчет профиля сгенерирован в папку сборки. Чтобы открыть отчет, измените папку (cd) на папку сборки и открыть файл model.html, открыв его в окне браузера. Вот выборка TLC, профилирующего отчет:

Созданный отчет довольно очевиден. Некоторые моменты, которые необходимо отметить,

  • Функции сортируются в порядке убывания их времени выполнения.

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

  • Функции являются гиперссылками, которые берут вас к деталям, связанным с той определенной функцией.

Отчет профилирования может быть полезным, когда вы встроили S-функции в своей модели. Можно использовать профилировщик, чтобы сравнить время, проведенное в написанном пользователем определенном или функции Lib, и затем изменить код TLC соответственно.

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

TLC полагает, что следующие директивы неисполняемые строки. Поэтому эти директивы не считаются в Отчетах профилирования TLC:

  • %filescope

  • %else

  • %endif

  • %endforeach

  • %endfor

  • %endroll

  • %endwith

  • %body

  • %endbody

  • %endfunction

  • %endswitch

  • %default

  • Комментарий (%% или /% text %/

Улучшание производительности

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

  • Уменьшайте использование EXISTS. Выполнение EXISTS на поле является более дорогостоящим, чем сравнение поля к значению. Когда возможно, создайте инертное значение по умолчанию для поля. Затем вместо того, чтобы делать EXISTS на сущности, сравните его со значением по умолчанию.

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

Похожие темы