Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [c/c++]Timer linux

  1. #1

    [c/c++]Timer linux

    Salve.. avevo bisogno di un timer che mi misuri le prestazioni di una parte del programma. Non è obbligatorio che mi restituisca per forza il tempo in ms.. basta che mi dia un valore misura del tempo di esecuzione.

    Il sistema operativo è ubuntu e il pc dove lo uso è un core 2 duo T5250 a 1.5 GHz.
    Avevo provato questo:
    ------------------------------------------------
    /*
    * A timer in C
    * author: Danny Battison
    * contact: gabehabe@hotmail.com
    */

    #include <time.h>
    #include <stdio.h>

    clock_t BeginTimer()
    {
    //timer declaration
    clock_t Begin; //initialize Begin

    Begin = clock() * CLOCKS_PER_SEC/1000; //start the timer

    return Begin;
    }
    clock_t EndTimer(clock_t begin)
    {
    clock_t End;
    End = clock() * CLOCKS_PER_SEC/1000; //stop the timer
    return End;
    }

    int main ()
    {
    double begin = BeginTimer();
    printf ("Timer set to: %.2f\n", begin); // print the initialised timer (0)

    // process to be timed goes here
    printf ("Enter something to stop the timer: ");
    char input;
    scanf ("%c", &input);

    // variable declarations used for time calculation
    float elapTicks;
    float elapMilli, elapSeconds, elapMinutes;

    // variable definitions on to calculate time taken
    elapTicks = EndTimer(begin); // stop the timer, and calculete the time taken
    elapMilli = elapTicks/1000; // milliseconds from Begin to End
    elapSeconds = elapMilli/1000; // seconds from Begin to End
    elapMinutes = elapSeconds/60; // minutes from Begin to End

    printf ("Milliseconds passed: %.2f\n", elapMilli);
    printf ("Seconds passed: %.2f\n", elapSeconds);
    printf ("Minutes passed: %.2f", elapMinutes);

    // hold the window open
    char dummy;
    scanf ("%c", &dummy);
    return 0;
    }
    ------------------------------------------------


    Ma (mentre ad altri funzionava.. ad esempio con osx, ma anche ad altri con ubuntu), a me da sempre come risultato 0. E' facile vedere dal codice che clock() mi torna sempre 0.
    Dopo ore e ore di ricerva, sono arrivato che l'unica causa (non essendoci problemi di compilatori/librerie ecc..) è che l'esecuzione è troppo veloce.. e dunque il tempo risulta 0.

    Difatti provando ad inserire, tra il begin e l'end, un semplice:

    for(int i=0;i<200000000;i++);

    viene fuori il risultato corretto del tempo di esecuzione di solito 6 decimi circa.
    Il problema è che nel programma dove dovrei usare ciò, devo misurare un tempo di esecuzione minore di quel tempo! E questa time non va...
    questo è quel che hai, perchè tu lo vuoi, oraaa!

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    grazie, sembrerebbe quello che fa al caso mio ma non riesco a trovare dove scaricare l'ultima versione.. ho trovato questo link:
    http://rtportal.upv.es/apps/rtl-timers/ -che mi da una versione beta 0.1
    http://www.cs.uofs.edu/~beidler/Ada/...ix-timers.html -che penso abbia molte dipendenze non incluse.. non trovo un sito
    questo è quel che hai, perchè tu lo vuoi, oraaa!

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Credo tu abbia fraintesto. Non devi guardare alla funzione RTLinux, ma a gettimeofday()
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  5. #5
    Bene ho risolto.. vi lascio un link molto utile che ho trovato:
    http://www.devx.com/cplus/Article/35375/1954
    questo è quel che hai, perchè tu lo vuoi, oraaa!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.