Προς το περιεχόμενο

xronometrish programmatos se C?


tsialiam

Προτεινόμενες αναρτήσεις

Δημοσ.

Yπαρχει ενα προγραμματακι που λεγεται PAPI και το οποιο μετραει τον χρονο που καταναλωνεται σε καθε εντολη ενος προγραμματος και δούλευει και με C .Ισως ομως να αντιμετωπισεις κανα προβλημα στο install γιατι ειναι οντως λιγο περιεργο σε αυτον τον τομεα.

 

P.S Δεν δουλευει με επεξεργαστες XEON για προφανεις λογους ...

Δημοσ.

Ean exeis ftiaksei ena programma kai 8eleis na deis posi wra xreiazetai gia na treksei xrisimopoiise tin time. Grapse time <onoma_programmatos>. Ean 8es apo8ikeuse ta dedomena se ena arxeio keimenou kai mporeis mesa apo kapoio allo programma se c na pareis mono tis plirofories pou se endiaferoun.

 

Ean 8eleis na metriseis poso xrono kanei to programma sou gia na ektelesei ena sinolo entolwn (px o xronos gia enan algori8mo pou exeis ftiaksei) mporeis na xrisimopoieis tin time_t time(time_t *t); Auti epistrefei ta deuterolepta pou exoun perasei apo 00:00:00 UTC, January 1, 1970. Apo8ikeuse auti tin timi se mia metavliti prin arxisoun oi entoles pou 8eleis kai apo8ikeuse pali tin timi pou 8a sou epistrepsei meta tin ektelesi twn entolwn. Kanontas tin diafora mporeis na ipologiseis poso xrono xreiastike gia na ektelestei.

Δημοσ.
uparxei kapoio programma pou na upologizei ton xrono pou thelei na treksei ena programma se C? h tis entoles pou ektelh h thn poluplokothta tou? h kati paromio.

Se linux kata protimish.

 

 

Gia na metriseis poso xrono kanei ena programma gia na ektelesei kapoies entoles, kalytera na xrisimopoihseis tin clock_t kai clock_t clock(void) h opoia epistrefei to xrono pou xreiastike o epeksergastis gia na tis treksei, apo tin sygkekrimeni diadikasia, metrimenos se kyklous tou epeksergasti ana deuterolepto (CLOCKS_PER_SEC, to opoio apo to systima einai 128 ). Sygkekrimena to parakatw programma einai ena paradeigma mias tetoias periptwsis se C:

 

#include <stdio.h>

#include <time.h>

#include <stdlib.h>

 

int

main()

{

int i;

clock_t clk1,clk2;

 

clk1 = clock();

 

srand(time(0));

for(i = 0;i < 3000; ++i) {

printf("%d\n", rand());

}

 

clk2 = clock();

 

printf("\nTime (seconds) to generate 3000 random numbers = %lg\n", (clk2 - clk1)/(double)CLOCKS_PER_SEC);

 

system("pause");

 

return 0;

}

 

to opoio tha epistrepsei (oxi panta, logw tis rand kai twn diaforetikwn CPU)

 

Time (seconds) to generate 3000 random numbers = 0.52

 

Opou oi clk1 kai clk2 metroun se kuklous epeksergasti kai metatrepoume tin diafora tous me to (clk2 - clk1)/(double)CLOCKS_PER_SEC se deuterolepta, se dekadiki morfi omws (double), diladi 0.53 sec. An pali to thes se milliseconds tote pollaplasiase to me to 1000. O parapanw kwdikas exei to eksis pleonektima me ton katwthi pou xrisimopoiei tin time, giati h time_t time(time_t *t) epistrefei seconds se int, kai oxi milliseconds to opoio mas dinei megaliteri akriveia! Diladi ena programma pou ekteleitai se ligotero apo 1 sec tha sou epistrefei panta 0 me tin time, parolo pou tha exei xreiastei kapoio xrono na ekteleisei tis leitourgies tou. Episeis exeis to idio provlima an theleis megaliteri akriveia stis metriseis apo seconds. Auto to provlima eksalifetai me tin clock, kathws h clock den metra to xrono opws h time, apo tin 00:00:00 UTC, January 1, 1970, alla apo ti stigmi pou tin dilwneis.

 

To parakanw programma graftike me tin time anti gia tin clock

 

#include <stdio.h>

#include <time.h>

#include <stdlib.h>

 

int

main()

{

int i;

time_t t1,t2;

 

time(&t1);

 

srand(time(0));

for(i = 0;i < 3000; ++i) {

printf("%d\n", rand());

}

 

time(&t2);

 

printf("\nTime (seconds) to generate 3000 random numbers = %d\n", (int)(t2 - t1));

 

system("pause");

 

return 0;

}

 

To opoio epistrefei:

 

Time (seconds) to generate 3000 random numbers = 0

 

Gia opoiadipote alli aporia mporeis na mou steileis pm h na kaneis ena search sto google, gia definitions h/kai alles synartiseis paraplisies me tis clock kai time.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...