Newsgroup: it.comp.giochi.simulatori
Titolo: [STRA OT] Comando C

Scusate lo straot, ma in it.comp.lang.c non sembrano saperne molto...e
siccome qualcuno di voi è stato programmatore...
Sapreste dirmi un modo per conteggiare gli EFFETTIVI cicli di clock da
un momento all'altro (o al limite i millisecondi trascorsi) in un
programma C?
Non ditemi di usare clock() perchè da risultati a dir poco imprecisi e
grossolani.
Mi serve per verificare le prestazioni di una FFT radix-8.
Scusate ancora e se potete aiutatemi...

 ha scritto nel messaggio
news:9q3chts8037r9pam2...@4ax.com...




Il newsgroup piu'  giusto e'  it.comp.programmare.win32
o anche it.comp.giochi.programmazione
La soluzione comunemente adottata e' quella di usare il clock hardware
interno ai microprocessori.
Pero'  funziona solo sui micro relativamtne recenti (dal pentium in
poi).
fai cosi':
------------------------ Inizializzazione --------
 // is there a performance counter available?
    if (QueryPerformanceFrequency((LARGE_INTEGER *) &perf_cnt)) {
        // yes, set timer info and get starting time
        perf_flag=TRUE;
        QueryPerformanceCounter((LARGE_INTEGER *) &last_time);
        time_scale=1.0f/perf_cnt;
    } else {
        // no performance counter, read in using timeGetTime
        last_time=timeGetTime();
        time_scale=0.001f;
    }
----------------------------------------------------
------- Nel loop del programma --------
            // use the appropriate method to get time
            // and calculate elapsed time since last frame
            if (perf_flag)
                QueryPerformanceCounter((LARGE_INTEGER *) &cur_time);
            else
                cur_time=timeGetTime();
            // calculate elapsed time
            time_elapsed=(cur_time-last_time)*time_scale;
-----------------------------------------------------
il PerformanceCounter e'  consigliato anche nella documentazione delle
directx ed e'  preciso al millisecondo.
--
Ciao
M.2fast4u Giorgio
Le FAQ di - it.comp.giochi.simulatori.volo - le trovi su:
http://users.iol.it/ulisse31/
GPLrank handicap: -13.xx - 
http://gplrank.ringlord.com/
ICQ 28779230

o anche it.comp.giochi.programmazione
Ops.....
it.comp.giochi.sviluppo
P.s.
Il ng in questione e'  uno dei migliori, io lurko parecchio, ma e'
roba da veri esperti.


 wrote:
Giusto per fare le cose fatte bene ti metto anche  le dichiarazioni
delle variabili :
   LONGLONG cur_time;       // current time
    LONGLONG perf_cnt;       // performance timer frequency
    BOOL perf_flag=FALSE;    // flag determining which timer to use
    LONGLONG last_time=0;    // time of previous frame
    float time_elapsed;      // time since previous frame
    float time_scale;        // scaling factor for time



ALT, blocca tutto, un attimo.
E' la prima volta che uso il C, per usare tutto il popo di roba che mi
hai detto (e di cui ti ringrazio) che #include devo mettere?
Comunque non è per un gioco.


Comunque non è per un gioco.
Ok, io l'ho scoperto programmando in directx quando mi ero messo a
fare un simulatore automobilistico nel tempo libero.
Ma rimane comunque di gran lunga il timer piu'  preciso su di un pc,
anche perche' e'  completamente hardware. Quindi lo puoi usare
tranquillamente per qualsiasi applicazione.


 ha scritto nel messaggio
news:gdichtshb5edgnt00...@4ax.com...



uso il djgpp v.2


puoi anche usare GetTickCount(), molto semplicemente.
Proverò



Caspita non mi va ne' questo ne' timegettime, ne i query...NON CI SONO
PROPRIO.

Proverò
cut...
Scusate il Quoting indegno

     if (QueryPerformanceFrequency((LARGE_INTEGER *) &perf_cnt)) {
Ecco proprio quelle funzioni intendevo!! Sei stato un po' piu preciso di me!
:-)
DD

Comunque non è per un gioco.
si, dicono tutti cosi'...
e impara a quotare!
Ciao, ciao
-- 
Ryoga Hibiki
alias  -Marco Fracasso-       fan #1 di Sergio Baracco
icq: ryoga #48412761    e-mail: 
ryoga...@tin.it
"War es ein Gott der diese zeichen schrieb?" (Goethe, Faust)


Ecco perchè i newsgroup sono destinati a diventare immondizia :-)