13.1.18. Koodin profilointityökalu

Window → Show Code Profiler avaa funktiotason profilointityökalun yhdistetyssä kamerassa käynnissä olevalle laiteohjelmistolle: mitkä C-funktiot suoritettiin, kuinka usein ja mihin mikrosekunnit kuluivat, suoratoistettuna reaaliajassa skriptin suorituksen aikana. Se vastaa kysymykseen, jonka FPS-laskuri nostaa esiin – miksi tämä putki on hidas – kameran oman koodin tasolla.

Profilointituki on käännetty laiteohjelmistoon, eikä sitä ole aina läsnä: kameran on suoritettava laiteohjelmistoa, joka on käännetty asetuksella PROFILE_ENABLE=1, ja muutoin valikkokohta pysyy ei-aktiivisena. Tällaisen laiteohjelmiston rakentaminen on osa mukautetun käännöksen työnkulkua, joka käsitellään kohdassa Laiteohjelmiston kääntäminen.

Code Profiler -ikkuna: funktiotaulukko täytettynä kutsumäärillä, ajoitussarakkeilla, prosenttiosuuksilla ja kahdella laitteistotapahtumalaskurin sarakkeella, Flat/Tree- ja Inclusive/Exclusive-ohjaimet ylhäällä ja kokonaissummarivi alhaalla

Profilointityökalu seuraamassa skriptin suoritusta: funktiokohtaiset kutsut, ajoitus ja prosenttiosuus kokonaisajasta, kaksi laitteistotapahtumalaskuria oikeanpuoleisimmissa sarakkeissa ja kokonaissummarivi alla.

Ikkuna on lajiteltava taulukko funktioista, joissa on niiden kutsumäärät, minimi-, maksimi-, kokonais- ja keskimääräiset mikrosekunnit, keskimääräiset jaksot ja prosenttiosuus kokonaisajasta, kokonaissummarivin kanssa alla ja suodatinruutuna funktioiden löytämiseksi nimen perusteella. Funktioiden nimet tulevat laiteohjelmiston ELF-tiedostosta – osoita ikkunan laiteohjelmiston polkukenttä käännöksen tuottamaan .elf-tiedostoon, ja osoitteet ratkeavat nimiksi.

Kaksi näkymäohjainta järjestää datan. Flat asettaa jokaisen funktion paremmuusjärjestykseen itsenäisesti – näkymä kysymykseen ”mikä on yksittäinen kallein funktio.” Tree sijoittaa kutsutut sisäkkäin kutsujien alle, näyttäen miten aika jakautuu kutsuketjun mukaan. Tästä riippumatta Inclusive veloittaa funktiolle kaiken sen, mitä se kutsui, kun taas Exclusive laskee vain funktion oman rungon – inclusive löytää kalliin alijärjestelmän, exclusive löytää kalliin silmukan. Reset nollaa laskurit, mikä on tapa mitata putken yksi vaihe erikseen: nollaa, anna sen suorittua, lue.

Profilointityökalu voi myös näyttää laitteistotapahtumalaskureita – välimuistihutit, haarautumisen virhe-ennusteet ja muut tapahtumat, joita prosessori voi laskea – ajoitussarakkeiden rinnalla; valitse ne samasta ikkunasta laiteohjelmistossa, joka on rakennettu tämän tuen kanssa.

Katso myös

openmv-paketin komentorivityökalu voi peittää samat profilointitiedot live-virran päälle komentoriviltä – katso openmv-komentorivityökalu.