return_elapsed_time akkumuliert

Von: , Frage gestellt am Di, 8. Mai 2001

Liebe Experten,

ich schreibe da gerade ein C++ Programm, das unter Linux (SuSE 6.4 oder SuSE 7.1) mit dem GCC und der libg++ compiliert wird.

Dabei benutze ich die Funktion return_elapsed_time(), die -laut doku (info libg++)- mit einem Argument von 0 die Zeit seit dem letzen start_timer()-Aufruf zurueckliefern soll.

Leider akkumuliert die Zeit seit dem _ersten_ start_timer()-Aufruf

Ein Beispiel:

# include <iostream>
# include <builtin.h>
# include <cmath>
void perform_complex_operation (void) {
sleep(1);
double val = (pow(sin(4.3),3.1)*tan(3.22))/(cos(0.0002)+sin(1.1111));
double val2 =   val/(pow(sin(4.3),3.1)*tan(3.22))/(cos(0.0002)+sin(1.1111));
}
int main (void) {
unsigned int i = 10;
while(i--) {
start_timer();
perform_complex_operation();
cout << i << " " << return_elapsed_time(0) << endl;
}
return(0);
}

Compilieren mit:
gcc -o test_timer test_timer.cc -lg++


Kann mir da jemand weiterhelfen? Was mache ich falsch, wo steckt der Gedankenknoten?

2 Antworten zu dieser Frage

  1. Antwort von nach 48 Minuten 0 hilfreich
    Re: return_elapsed_time akkumuliert

    Hi Kampi :)

    Warum nicht einfach so ...

    void perform_complex_operation (void) {
    //Do something time consuming
    }
    int main (void) {
    unsigned int i = 10;
    while(i--) {
    start_timer();
    unsigned long before= return_elapsed_time(0);
    perform_complex_operation();
    unsigned long after= return_elapsed_time(0);
    cout << i << " " <<
    after-before << endl;
    }
    return(0);
    }
    

    Ist nur ein Hack. Leider kenne ich den gcc kaum. Das start_timer() ist dann irgendwie überflüssig. Musste mal in der Doku genauer nachlesen ... Aber das Obige müsste laufen :)

    cu Stefan.

    • Antwort von nach 16 Stunden 0 hilfreich
      Re^2: return_elapsed_time akkumuliert

      Hi Kampi :)

      Warum nicht einfach so ...

      void perform_complex_operation (void) {
      //Do something time consuming
      }
      ...
      

      Ist nur ein Hack.
      Mein alter Hack sah etwas anders aus: ich habe jeweils die Zeiten aufsummiert und dann die vergangene Zeit seit der Summer verwendet. Dabei hatte ich Ueberlaeufe in int....
      Ich denke, dein Hack ist da schon etwas geschickter :-)
      Werde's versuchen.

      dank

      kampi

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!