Zajímá vás, kolik výpočetního času zabere vypočítat konkrétní subsystém?

Profiler je chytrý pomocník, který sleduje, jak dlouho co trvá. V základním režimu ti řekne:

„Celý model běžel 2,4 milisekundy.“

Ale v tomto článku si představíme, jak si změřit jen jednu konkrétní část modelu (např. jeden subsystém). Tato funkce je velmi nápomocná právě třeba při hledání, co konkrétního systém zpomaluje.

V předchozím článku jsem se věnoval využití Profileru pro časovou analýzu procesů běžících na dané platformě. Ukázali jsme si, jak plánovač úloh rozděluje výpočetní výkon mezi jednotlivé úlohy, jak pracuje s prioritami a další související aspekty. Dnes bych se chtěl zaměřit na jednu méně často využívanou, ale užitečnou funkci Profileru.

Na obrázku (obr.1) je typický výstup z programu. Na řádcích pod sebou je zobrazena aplikace (Periodic Task 1) a Bus komunikace (Bus Configuration). Na ose X je čas. Změřit výpočetní čas je otázka pár kliknutí. Známe tedy kolik času je potřeba na spočítání celého modelu.

obrazek 01

Pokud bych chtěl zjistit kolik času zabere výpočet konkrétní části modelu, postupoval bych následovně:

obr2
  1. Vyberu si subsystém, u kterého mě zajímá výpočetní čas
    1. Pro subsystém nastavím parametr Treat as atomic unit
  2. Vložím do subsystému bloky Data Store Memory, System Initialize a System Outputs
  3. Nastavím bloky
    1. Data Store Memory – zvolím název proměnné (např. A) a Storage class: ExportedGlobal.

      Nastavení ExportedGlobal se věnují zde Data Store Memory

    2. System Initialize – System Initialize Function Execution Code

      A = dsProfilerCre­ateSource(„Sub­system“);

      A…jméno proměnné musí být identické s tím, které jsem zvolil v Data Store Memory

      („Subsystem“)…Název který uvidím v Profileru

    3. System Outputs

      System Outputs Function Declaration Code

      extern uint16_T A;

      System Outputs Function Execution Code

      dsProfilerWri­teEvent(A, UserTimespanStart, 0, 0);

      System Outputs Function Exit Code

      dsProfilerWri­teEvent(A, UserTimespanEnd, 0, 0);

Model rozšířený o nové bloky „zbuildujeme“ a nahrajeme na platformu. V Profileru přibude nový řádek, který nás informuje, kolik času zabral výpočet měřeného subsystému.

obrazek 03

Nyní už víte, jak měřit výpočetní čas i u konkrétního subsystému – praktická funkce, kterou se vyplatí mít v rukávu při ladění modelu.

obrazek 04

Pro další informace a konzultace kontaktujte Tomáše Fridricha:

Tomáš Fridrich, 7.8.2025

close