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

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

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

В диалоговом окне Параметров конфигурации выберите Profile 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 для сущности сравните его со значением по умолчанию.

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

Похожие темы