Come profilare il mio codice usando la mia classe che misura il tempo?

0

Quindi lavoro su un progetto e voglio profilare il mio codice. Ho usato KCachegrind per avere un'idea generale di quali funzioni costano di più. Ma ora voglio ottenere il tempo esatto trascorso su quelle particolari funzioni. Così ho deciso di misurarli manualmente usando clock_gettime usando l'approccio orientato agli oggetti. vale a dire. funzione wrap clock_gettime all'interno di una classe.

Diciamo che voglio creare una classe che gestisca la misurazione del tempo

class measure_time{

    inline int start(){...}; // return ts_start 
    inline int end(){...};   // return ts_end

};

Quindi uso questa classe per misurare il tempo attraverso i progetti. Quando sto per misurare devo creare istanza di measure_time per ogni classe del mio progetto. cioè: Diciamo che ho classe A, classe B, classe C ecc nel mio progetto.

// A.h
class A{
   void f();
   void f_1();
   measure_time mt;
}
// A.cpp
void A::f(){
    // does some work 
}

void A::f_1(){

    // measure time start
    s = mt.start();
    f()
    // measure time end
    e = mt.end();
    //record time
    time = s-e;

}

// B.h
class B{
   void g();
   void g_1();
   measure_time mt;
}
// B.cpp
void B::g(){
    // does some work
}

void B::g_1(){

     // measure time start
    s = mt.start();
    g()
    // measure time end
    e = mt.end();
    //record time
    time = s-e;

}

// C.h
class C{
   void h();
   void h_1();  
   measure_time mt;
}
//C.cpp
void C::h(){
    // does some work
}

void C::h_1(){

     // measure time start
    s = mt.start();
    h()
    // measure time end
    e = mt.end();
    //record time
    time = s-e;

}

Con questo approccio devo definire la classe 'measure_time' in ciascuna classe. Quindi quello che volevo era definire la classe measure_time una sola volta e usarla attraverso la classe A, B e C.

    
posta solti 12.01.2017 - 19:57
fonte

1 risposta

2

t sembra che tu stia cercando di usare un timer per misurare il tempo di esecuzione tra tre oggetti? Se è quello che stai facendo, le tue classi non dovrebbero sapere qualsiasi cosa su quel timer.

Imposta un timer in un'altra classe, avvialo, esegui i tuoi tre oggetti, ferma il timer e guarda il risultato. Un oggetto dovrebbe avere un proprio timer se è responsabile della temporizzazione stessa.

    
risposta data 12.01.2017 - 21:48
fonte

Leggi altre domande sui tag