Funzione Clock() in linguaggio C

Funzione Clock In Linguaggio C



In questo Suggerimento Linux articolo, ti mostreremo come utilizzare il orologio() funzione, una delle risorse disponibili nel linguaggio C, per misurare i tempi di esecuzione di un particolare processo o thread.

Sebbene queste frazioni di tempo sembrino insignificanti, ci sono casi critici in cui la capacità di misurare e calcolare queste piccole frazioni di tempo sono fattori critici per l'accuratezza del sistema o del processo stesso. Daremo una descrizione teorica di come orologio() funziona, spiegarne il funzionamento e le unità di misura che utilizza a tale scopo.







Successivamente, utilizzando esempi pratici che includono frammenti di codice e immagini, vedremo come è possibile implementare questa funzione in modo chiaro e dettagliato per misurare i tempi critici nei processi in tempo reale in diversi sistemi.



Sintassi della funzione Clock():



orologio_t orologio ( vuoto )





Descrizione della funzione Clock () in linguaggio C

La funzione clock() è vuota quando viene chiamata. Non contiene argomenti di input e restituisce il numero di tick dell'orologio in 'clock_t' al momento della chiamata.

Il conteggio degli impulsi parte da zero all'avvio dell'applicazione e continua fino a quando l'utente o il sistema non ne esce, azzerandosi per overflow ogni 72 minuti circa. La funzione clock() non modifica né controlla questo contatore; ottiene il suo valore solo quando viene chiamato.



Per misurare il tempo totale di esecuzione del programma, dobbiamo chiamare clock() solo una volta alla fine del programma. Per misurare il tempo trascorso da un punto all'altro del programma, dobbiamo chiamare la funzione clock() e calcolare i due dati ottenuti.

Il calcolo per determinare i tick trascorsi tra due chiamate del orologio() La funzione viene eseguita sottraendo il risultato della prima chiamata dal risultato della seconda chiamata. Vediamo un esempio per determinare la quantità di tempo trascorso da un punto all'altro del programma.

Il orologio() la funzione è definita nelle funzioni di intestazione 'time.h'. Dobbiamo includerlo nel nostro file di codice '.c' o '.h', come mostrato nell'immagine seguente, per poterlo utilizzare.

#include

Come ottenere i tick dell'orologio trascorso da un punto all'altro del programma con la funzione Clock()

In questo esempio vedremo come ottenere il numero di tick trascorsi da un punto all'altro del programma. Questi due punti corrispondono ad una delle due chiamate al orologio() funzione, rispettivamente. Per capirlo, vediamo il seguente codice:





#include

#include



vuoto principale ( )



{

clock_t ticks_ini, ticks_end;

doppio segno di spunta;

ticks_ini = orologio ( ) ; // inizio misura

printf ( 'tick misura init  %ld \n ' , ticks_ini ) ;

per ( int un = 0 ; un < = 456450 ; a++ ) ;



ticks_end = orologio ( ) ; // arresto di misura

ticks = ticks_end - ticks_ini;

printf ( 'tick fine misura  %ld \n ' ,  tick_end ) ;

printf ( 'tick trascorsi tra la misura  %f \n ' ,  zecche ) ;

Restituzione ;

}



Per prima cosa, creiamo le due variabili, ticks_ini e ticks_end , in cui memorizziamo il risultato di clock() nelle sue due chiamate. Lo calcoliamo per ottenere il numero di tick trascorsi e il numero intero zecche , in cui memorizziamo il risultato finale dei tick totali trascorsi.

Quindi, chiamiamo il orologio() funzione nel nostro 'principale' e recuperare i tick dell'orologio precedentemente definiti nel file ticks_ini variabile che è trascorsa dall'inizio del programma fino alla prima chiamata a questa funzione. Usiamo la funzione printf() per visualizzare questo valore.

Dopo questo ritardo, con cui abbiamo creato per , chiamiamo il orologio() funzione per una seconda volta per ottenere il numero di tick fino a questo punto. Produciamo il risultato sullo schermo con la funzione printf(). Otteniamo quindi il risultato del numero esatto di tick trascorsi tra la prima e la seconda chiamata a orologio() sottraendo ticks_ini da ticks_end e memorizzando il risultato nella variabile ticks, che inviamo alla console con printf().

In questo modo otteniamo i tick trascorsi da un punto all'altro del codice.

Come convertire il numero di tick ottenuti in secondi con la funzione Clock()

Una volta che abbiamo il numero di tick trascorsi dall'avvio del programma o da un punto all'altro, possiamo convertire questo tempo espresso in tick in secondi dividendo il risultato dell'esempio precedente per la costante predefinita in time.h OROLOGI _PER_ SEC, come mostrato nel seguente frammento:

zecche = ( ticks_end - ticks_ini ) / ( Doppio ) OROLOGI_PER_SEC;

printf ( 'tick trascorsi in secondi tra la misura  %f \n ' ,  zecche ) ;

Conclusione

In questo Suggerimento Linux articolo, ti abbiamo mostrato come implementare il orologio() funzione per effettuare le misurazioni del tempo in tick dell'orologio di sistema. Abbiamo anche spiegato come misurare tutti o parte di questi tempi all'interno dell'applicazione in esecuzione. Ti abbiamo mostrato come convertire i risultati in secondi. Ci auguriamo che tu abbia trovato utile questo articolo. Puoi trovare ulteriori suggerimenti sul linguaggio C nei nostri articoli che puoi trovare utilizzando il motore di ricerca del sito web.