exponenta event banner

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

Использование профилировщика

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

В диалоговом окне «Параметры конфигурации» выберите «Профиль TLC». Примените изменения и нажмите клавиши Ctrl + B.

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

Анализ отчета

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

Созданный отчет является достаточно самостоятельным. Следует отметить следующие моменты:

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

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

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

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

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

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

  • %filescope

  • %else

  • %endif

  • %endforeach

  • %endfor

  • %endroll

  • %endwith

  • %body

  • %endbody

  • %endfunction

  • %endswitch

  • %default

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

Повышение производительности

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

  • Сокращение использования EXISTS. Выполнение EXISTS для поля дороже, чем сравнение поля со значением. По возможности создайте для поля инертное значение по умолчанию. Тогда вместо того, чтобы делать EXISTS на объекте сравните его со значением по умолчанию.

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

Связанные темы