Newsgroup: it.comp.os.linux.development
Titolo: librerie time.h

Forse è un tema un po' trito ma davvero non riesco a capire se le librerie
time.h funzionano oppure no. La funzione clock() restituisce sempre lo stesso
valore, `0' per lo più, e anche utilizzando gprof ottengo sempre zero come
tempo di esecuzione delle funzioni.
Qualcuno potrebbe indicarmi dove trovare qualche esempio testato e
funzionante? È un problema comune?
Considerate che ho fatto dei test con diverse versioni del compilatore (2.96,
3.3.5 e 3.3.4) su diverse distribuzioni (RH7.3, Deb 3.1, e Slack 10.1)
-- 
Non capisco tutta questa eccitazione per il multitasking: io sono anni
che leggo in bagno.
                -- Carlo Landini

 10.1)
#include <stdio.h>
#include <time.h>
int
main (void)
{
  int i;
  clock_t k;
  for (i = 0; i < 10000000; i++)
    {
    }
  k = clock ();
  printf ("%i\n", (int)k);
return 0;
}
 A me funziona (perdonate il codice orrendo ma NON sono un programmatore).
-- 
<<>><<>><<>><<>><<>><<>><<<>><<>><<>><<
Luca Paredi
Computing technical supporter              
Universita' degli Studi dell'Insubria  
<<>><<>><<>><<>><<>><<>><<<>><<>><<>><<

                 -- Carlo Landini
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy              ROT13: 
ybe...@cq.vasa.vg

 tempo di esecuzione delle funzioni.
clock() restituisce (con le modalita' descritte in man clock) il tempo
di CPU usato dal programma.  Se la CPU non ha lavorato, clock() ti
dara' zero.  Ah, beninteso...  time.h non e' una libreria -- e' un
header file.  Se non capisci la differenza, andiamo maluccio.


 Se non capisci la differenza, andiamo maluccio.
No, ok, ho scritto una scemenza, magari mi sfugge la definizione formale
corretta di libreria.


 corretta di libreria.
Ciao,
Vabbè, si può rimediare subito: in un "header file" (come "time.h") ci sono
le dichiarazioni di variabili e funzioni che sono esportate da una libreria.
Il tuo programma utente, prima dell'esecuzione, è collegato (cioè e
sottoposto a "link", da un "link editor" come "/usr/bin/ld") alla libreria
che contiene la funzione che vuoi utilizzare (nel tuo caso la "clock()").
Nel tuo programma è necessario fornire la dichiarazione di tutte le funzioni
che utilizzerai, prima che esse siano effettivamente utilizzate, perchè,
senza entrare in dettagli, è così che il compilatore si accerta del corretto
utilizzo delle stesse. Per quest'ultimo motivo devi quindi includere
(#include time.h) lo "header file" nel tuo programma, prima dell'effettivo
utilizzo della funzione che è li dichiarata (clock()).
La precedente definizione è assolutamente NON scientifica e completa (mi
scuserete per questo...), ma ti può dare un'idea della differenza tra un
header file e la libreria dove è implementata la funzione.
Per quanto riguarda la clock(), questo è il modo corretto di usarla:
#include <time.h>
 clock_t c1, c2;
 c1 = clock();
 ... /* esegui qui le operazioni di cui vuoi misurare il tempo di utilizzo
della CPU */
 c2 = clock();
 printf("clock(): %.2f\n", (double)(c2 - c1) / CLOCKS_PER_SEC);
Stai attento al cast a double.
Altri esempi di utilizzo corretto della clock(), con miei esempi di codice
C, li puoi trovare:
http://groups.google.it/groups?hl=it&lr=&threadm=80Z183Z74Z219Y1101306911X32121%40usenet.libero.it&rnum=1&prev=/groups%3Fq%3Dauthor:fabiomdf%2Bclock%26hl%3Dit%26lr%3D%26selm%3D80Z183Z74Z219Y1101306911X321212540usenet.libero.it%26rnum%3D1
http://www.google.it/groups?hl=it&lr=&threadm=82Z49Z51Z99Y1098284662X892%40usenet.libero.it&rnum=2&prev=/groups%3Fq%3Dclock%2Bauthor:fabiomdf%26hl%3Dit%26lr%3D%26selm%3D82Z49Z51Z99Y1098284662X892%2540usenet.libero.it%26rnum%3D2
Leggi interamente i thread relativi ai suddetti posts.
Buon lavoro,
fabio de francesco
(fabiomdf)
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 header file e la libreria dove è implementata la funzione.
A tal proposito ho fatto qualche banale esperimento su come compilare e
archiviare (con «ar») un file libreria da utilizzare in seguito e l'ho trovato
davvero utile.
