Funzione per calcolare il tempo computazionale...

di il
6 risposte

Funzione per calcolare il tempo computazionale...

Ciao a tutti, avrei bisogno di una funzione che mi calcoli il tempo d'esecuzione di un programma che ho scritto. La funzione che ho usato io, difftime, mi ritorna sempre zero, questo perche' il processore impiega meno di un secondo per eseguire il programma. Quindi mi servirebbe un modo per calcolare questo tempo in millesimi di secondo, come posso fare?
Ciao

6 Risposte

  • Re: Funzione per calcolare il tempo computazionale...

    Come è sviluppato il programma ?

    Wolly
  • Re: Funzione per calcolare il tempo computazionale...

    Il programma e' sviluppato in c. Mi potresti aiutare, grazie.
    Ciao
  • Re: Funzione per calcolare il tempo computazionale...

    Sorry!

    Ma di c non me ne intendo!

    Wolly
  • Re: Funzione per calcolare il tempo computazionale...

    L'unico modo per ottenere un conteggio un pochino più preciso è tramite l'API GetTickCount (kernel32) prima e dopo la procedura. La differenza è il tempo trascorso in millisecondi. La granularità dipende dai sistemi operativi, XP sembra che l'abbia a volte anche meno di 20 ms; Win95/98 = 50ms

    Ducunt fata volentem, nolentem trahunt
  • Re: Funzione per calcolare il tempo computazionale...

    <BLOCKQUOTE id=quote><!--<font size= face="" id=quote>-->quote:<hr height=1 noshade id=quote>
    ciao mica sapete come si fa la stessa cosa in C#?

    Smac
    <hr height=1 noshade id=quote></BLOCKQUOTE id=quote><!--</font id=quote><font face="" size= id=quote>-->

    Identico

    Non sono un programmatore C, ma so che è necessario includere windows.h nel progetto, e poi si dice quacosa simile a:

    ... functionname() ... {

    long start_time;
    long end_time;
    long difference;

    start_time = GetTickCount;

    ...

    end_time = GetTickCount;

    difference = end_time - start_time;

    return (long)difference;

    }

    Dove i puntini stanno per il codice da aggiungere (cast, stdcall, metodi, macro, ecc).

    Nota però che C++ è molto veloce e a volte bisogna fare un benchmark da un loop. Inoltre, siccome Windows assegna arbitrariamente il tempo ai task/thread, il tempo calcolato non è sempre al 100% affidabile e può variare. La mia statistica è del +/- 10 percento.

    L'esatto benchmark, in cicli del processore, si può fare solo in Assembly, ed è certamente più preciso di ogni altro metodo, ma richiede un'ottima conoscenza della materia e, last not least, un'ottima strategia di programmazione.

    Ducunt fata volentem, nolentem trahunt
  • Re: Funzione per calcolare il tempo computazionale...

    Dimenticavo le parentesi:

    start_time = GetTickCount();

    ...

    end_time = GetTickCount();




    Giovanni
    ---
    Ducunt fata volentem, nolentem trahunt
Devi accedere o registrarti per scrivere nel forum
6 risposte