Funktion ottama aika

Onko kellään tiedossa sellaista työkalua, jolla voisi mitata tietyn funktion suorittamiseen kuluvan ajan? Kyse on sulautetusta koodista, josta pitäisi voida debug -tilassa tutkia tuo funktion kuluttama aika. Kieli on C.
6630
Äänestä

Muut lukivat myös

Vastaukset 6

Vanhimmat

onnistuu esim. clock() -funktiolla, syötät funktiolle ajan kun mitattavan funktion kutsu tehdään, syötät toiselle muuttujalle clock() -funktiolla toisen ajan kun palataan mitattavasta funktiosta, suoritan erotuksen ja tulostat sen!

esim:

clock_t x,y;

x=clock();
mitatta_funktio();

mitattava_funktio()
{
SUORITETAAN!
y=clock();
return y;
}

int erotus = x-y;
cout

Äänestä
  • ja debuggerissa voit katsoa muuttujan erotus sisältämää aikaa esim. silmukkarakenteessa, eli toimii kuten junan vessa! :)

    kirjastona clock() -funktiolle on muistaaksen time.h

    Äänestä

  • ggt kirjoitti:

    ja debuggerissa voit katsoa muuttujan erotus sisältämää aikaa esim. silmukkarakenteessa, eli toimii kuten junan vessa! :)

    kirjastona clock() -funktiolle on muistaaksen time.h

    on huomattava että sulautetussa ei vältämättä ole moista

    Äänestä

  • kljjkl kirjoitti:

    on huomattava että sulautetussa ei vältämättä ole moista

    ...käytän kuitenkin MS Visual C :aa. Jos aika tuossa Visualissa käännetyssä on tarpeeksi pieni, niin kait se on sitä myös lopullisessa IAR:n kääntäjällä käännetyssä softassa? Täytyypä kokeilla, kunhan ehdin taas sen projektin kimppuun. Kiitos neuvoista.

    Äänestä

Hmm..ainahan voisi laittaa jonkun outputti pinnin tilaksi vaikka ykköstä sen funktion ajaksi ja sitten vaan mittailla skoopin kanssa pulssin leveyttä.

Mitä debuggeria käytät?

Voihan sen kalikan sisäisiä timereita käyttää jos niitä on vapaana.. Lukemat vaan ylös.

Äänestä

Kommentoi aloitusta


sulautettu kirjoitti:

Onko kellään tiedossa sellaista työkalua, jolla voisi mitata tietyn funktion suorittamiseen kuluvan ajan? Kyse on sulautetusta koodista, josta pitäisi voida debug -tilassa tutkia tuo funktion kuluttama aika. Kieli on C.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu