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

ώρα σε πρόγραμμα C


pagratios

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

Δημοσ.

Θέλω να μου πει κάποιος πως μπορώ να τυπώσω τα micro sec μιας διεργασίας.

 

Τώρα τυπώνω sec κάνοντας

 

start = clock()

end = clock()

 

(end-start)/CLOCKS_PER_SEC

 

αλλά αυτό βγάζει sec

Δημοσ.
Η συνάρτηση gettimeofday

 

Αυτή τυπώνει πόση ώρα είναι ενεργή ας πούμε μια διερεγασία?

 

Κάτι άσχετο αλλά μέχρι πόσες fork μπορώ να κάνω?Πάνω από 1289 πετάει segmentation

 

edit: To έφτιαξα!!! Μετράει και σε ns?

Δημοσ.

Τελικά η συνάρτηση gettimeofday η αλήθεια είναι ότι μου έβαζε αποτελέσματα αντίθετα με την clock αλλά στο πρόγραμμα ενός καθηγητή όπου είδα και την χρήση της clock έβαλα αυτήν που μου προτείνατε και κοιτάξτε διαφορά

 

12.820000 sec

0.321711 sec ή καλύτερα tv.tv_usec/1000000

 

Ξέρει κάποιος για ποιον λόγο γίνεται?

Δημοσ.

H gettimeofday σου επιστρέφει sec και usec (η ακρίβεια των usec είναι πάντως, αν θυμάμαι καλά ανά 1000 usec ή αλλιώς 1 msec). Χρησιμοποίησες και τα sec ή τα ξέχασες και κράτησες μόνο τα usec?

 

Επίσης, το πρόγραμμά σου στην πραγματικότητα πόσο περίπου χρόνο τρέχει; H gettimeofday λειτουργεί κάπως έτσι

 

struct timeval start, stop;

unsigned long int elapsed;

 

...

gettimeofday(&start, NULL);

...

...

...

gettimeofday(&stop, NULL);

elapsed = (stop.tv_sec - start.tv_sec) * 1000000 + stop.tv_usec - start.tv_usec;

Δημοσ.

Αν προσέξεις το link που αναφέρεις, εκεί χρησιμοποιεί και τα tv.sec.

 

Είχα και εγώ ένα λαθάκι (είχα ξεχάσει τη 2η παράμετρο στην gettimeofday).

 

Η λύση που σου έδωσα σου βγάζει το χρόνο σε microseconds. Γενικά είναι καλή λύση να αποφεύγεις τους δεκαδικούς όσο μπορείς. Επίσης, καλό είναι να κάνεις πρώτα την αφαίρεση των secs και των usecs ανάμεσα στους χρόνους λήξης και έναρξης και μετά να κάνεις ότι πολλαπλασιασμούς και διαιρέσεις θέλεις, για να αποφύγεις (ειδικά στους πολλαπλασιασμούς) προβλήματα overflow.

 

Τέλος, η gettimeofday από μόνη της σου βγάζει το χρόνο που έχει περάσει από κάποια στιγμή το 1970... Οπότε έχει νόημα να την αξιοποιείς μόνο για να υπολογίσεις διαφορά χρόνου ανάμεσα σε 2 κλήσεις της.

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

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

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