Newsgroup: it.comp.lang.c
Titolo: Comando per conteggiare i cicli di clock

Salve, è la prima volta che scrivo in questo newsgrup e da pochissimo
che  uso il C.
Volevo sapere se qualcuno è cosi gentile da dirmi un comando (non ho
nessun manuale perchè ho scaricato il DJGPP) che mi dica il numero di
cicli di clock trascorsi da un momento ad un altro in quanto devo
verificare l'efficacia temporale di un algoritmo di FFT radix-8.
Spero qualcuno di voi possa aiutarmi.

 Spero qualcuno di voi possa aiutarmi.
NAME
       clock - Determine processor time
SYNOPSIS
       #include <time.h>
       clock_t clock(void);
DESCRIPTION
       The clock() function returns an approximation of processor
       time used by the program.
RETURN VALUE
       The value returned is the  CPU  time  used  so  far  as  a
       clock_t;  to  get  the  number  of seconds used, divide by
       CLOCKS_PER_SEC.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Windows /win'dohz/ n. : thirty-two  bit extension and graphical shell to
a sixteen  bit patch to an  eight bit operating system  originally coded
for a  four bit microprocessor  which was  written by a  two-bit company
that can't stand a bit of competition.


Ho pravato ad usarlo ma il risultato che mi da è troppo impreciso !!!
Mi ci vorrebbe qualcosa che conteggia gli EFFETTIVI cicli di clock (mi
ricordo che un mio vecchio amico aveva fatto un programma simile in C)
o al limite i millisecondi, mentre clock mi da un risultato
apprezzabile solo per tempi di esecuzione almeno di qualche secondo.
Spero che qualcuno di voi possa aiutarmi, comunque grazie Kronos.


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


Ehm, no sono su Windows e uso Djgpp v2.9etc, so che un mio amico
riusciva a fare un conteggio effettivo dei cicli di clock ma non
riesco più a contattarlo


se sei su unix, puoi usare time:
oppure anche gprof, che da informazioni ancora più dettagliate.
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

Anto

c:\djgpp\bin il file gprof.exe ma non l'ho trovato come "comando".
non so come funzioni sotto windows. Ma sotto linux devi prima di tutto
compilare il codice con l'opzione per abilitare il profiling (-pg o
-gp, non ricordo). Poi lanci il tuo eseguibile. Infine lanci gprof,
che ti da tutte le statistiche che vuoi.


Anto
Prima di tutto grazie, comunque io volevo trovare il tempo che impiega
solo una parte del programma e non tutta la sua esecuzione... cioč mi
serviva proprio un comando da inserire all'interno del programma e che
sia il piů preciso possibile.
Certi mi hanno suggerito:
"
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."
			"
ma funziona solo con Visual C
Io ho provato con gettimeofday o qualcosa di simile ma mi da un
risultato scazzatissimo (forse non lo so usare bene io), infine ho
provato con clock ma questo divide un'ora in 64k e mi da il numero di
tick trascorsi. Volevo una cosa piů precisa, al limite se non al
millesimo mi accontenterň del centesimo...

sia il piů preciso possibile.
ripeto il mio consiglio: usa gprof.
Se ci pensi non ha senso dover inserire del codice aggiuntivo per
calcolarsi manualmente quanto tempo impiega una parte di codice quando
ci sono degli strumenti che lo fanno in automatico.
Nella fattispecie, gprof ti restituisce il tempo impiegato da ogni
funzione del tuo programma. Meglio di cosě!


Anto

In breve potresti dirmi come si usa nel mio caso?
compili abilitando l'opzione di profiling (-pg o -gp, non ricordo).
Lanci il programma e aspetti che termini
Lanci gprof



Ho guardato la documentazione relativa a gprof, bisognava compilare
aggiungendo "-pg", praticamente per compilare scrivevo:
gcc -pg -Wall fft8F7.c -o fft8F7.exe
ma mi compare l'errore:
"gmon.out: no such file or directory"
Allora guardando ancora la documentazione ho visto:
_*Q*: Every time I run the profiler it says "gmon.out: no such file or
directory" and no profile is produced.  What is this `gmon.out' file,
and why
won't `gprof' compute the profile?_
*A*:  `gmon.out' is the file with raw execution counts and timing info
that
`gprof' needs to produce the profile.  The file is written by the
profiled
program when it exits.  If the file isn't created, it might be because
of one
of the following reasons:
   * You didn't compile and/or link your program with the `-pg'
switch.  Note
     that *both* compilation and link need to be done with `-pg',
because the
     functions that actually write the results to `gmon.out' are only
linked
     in when GCC sees `-pg' on the link command line.
Secondo voi cosa devo fare esattamente?
Grazie

"gmon.out: no such file or directory"
lanci gprof prima o dopo aver eseguito il tuo programma?
anto



Dopo, almeno questo l'ho capito :-)
Non è un problema di path etc... Piuttosto è giusto il modo in cui
compilo (dal punto di vista del gprof, visto che ad ogni modo il
programma viene compilato correttamente)?
Ti ringrazio


Risolto il problema !!! Finalmente !!!
Ti ringrazio per la pazienza che hai avuto con me.
Ora devo mettermi ad analizzare i risultati che mi sembrano un po'
incasinati.