return_elapsed_time akkumuliert

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 
# include 
# include 

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 
Compilieren mit:
gcc -o test\_timer test\_timer.cc -lg++


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

Hi Kampi :smile:

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 
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 :smile:

cu Stefan.

Hi Kampi :smile:

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 :smile:
Werde’s versuchen.

dank

kampi