В этом примере показано, как использовать блок Log Event для вставки определяемого пользователем события в поток событий профилирования выполнения. Дополнительные сведения о профилировании выполнения см. в разделе Профилирование выполнения для приложений реального времени.
Чтобы открыть модель, в окне команды MATLAB введите:
open_system(fullfile(matlabroot,'toolbox','slrealtime','examples','slrt_ex_log_event'));
mdl = 'slrt_ex_log_event'; mdlOpened = 0; systems = find_system('type', 'block_diagram'); if ~any(strcmp(mdl, systems)) mdlOpened = 1; open_system(fullfile(matlabroot,'toolbox','slrealtime','examples',mdl)); end

Откройте диалоговое окно «Параметры конфигурации». Выберите «Создание кода» > «Проверка».
Для параметра Measure function execution time (Время выполнения функции измерения) выберите Detailed (Detailed) (detailed ( Флажок Время выполнения задачи измерения установлен и заблокирован. Нажмите кнопку ОК.
Или в окне команды MATLAB введите:
set_param('slrt_ex_log_event','CodeProfilingInstrumentation','Detailed');
Создайте модель и загрузите ее на целевой компьютер.
evalc('slbuild(mdl)');
tg = slrealtime;
load(tg,mdl);
Запустите профилировщик и затем запустите приложение реального времени.
startProfiler(tg); start(tg); pause(20) stopProfiler(tg); stop(tg);
Warning: Profiler already stopped. Command ignored.
Извлеките данные профилировщика. Отображение определяемого пользователем события в таблице.
profiler_data = getProfilerData(tg); profiler_data.EventTrace.etData
Processing data on target computer ...
Transferring data from target computer ...
Processing data on host computer ...
ans =
2×6 table
Channel Timestamp Event Value CPU ModelTime
_______ ________________ _____ _____ ___ _________
500 3545275820041720 200 200 1 2
1000 3545280320044224 100 700 1 6.5
График «Профиль выполнения» показывает распределение циклов выполнения между четырьмя процессорами, на что указывают цветные горизонтальные полосы. Разделы модели перечислены в отчете по профилированию выполнения кода. Сердечники обозначены номерами под столбцами.
Закройте модель, если она открыта.
if (mdlOpened) bdclose(mdl); end