pagratios Δημοσ. 4 Δεκεμβρίου 2009 Δημοσ. 4 Δεκεμβρίου 2009 Θέλω να μου πει κάποιος πως μπορώ να τυπώσω τα micro sec μιας διεργασίας. Τώρα τυπώνω sec κάνοντας start = clock() end = clock() (end-start)/CLOCKS_PER_SEC αλλά αυτό βγάζει sec
parsifal Δημοσ. 4 Δεκεμβρίου 2009 Δημοσ. 4 Δεκεμβρίου 2009 http://www.insomnia.gr/forum/showthread.php?p=2981185#post2981185
pagratios Δημοσ. 4 Δεκεμβρίου 2009 Μέλος Δημοσ. 4 Δεκεμβρίου 2009 Κάτι άλλο υπάρχει εκτός από αυτήν την συνάρτηση?
pagratios Δημοσ. 5 Δεκεμβρίου 2009 Μέλος Δημοσ. 5 Δεκεμβρίου 2009 Η συνάρτηση gettimeofday Αυτή τυπώνει πόση ώρα είναι ενεργή ας πούμε μια διερεγασία? Κάτι άσχετο αλλά μέχρι πόσες fork μπορώ να κάνω?Πάνω από 1289 πετάει segmentation edit: To έφτιαξα!!! Μετράει και σε ns?
pagratios Δημοσ. 7 Δεκεμβρίου 2009 Μέλος Δημοσ. 7 Δεκεμβρίου 2009 Τελικά η συνάρτηση gettimeofday η αλήθεια είναι ότι μου έβαζε αποτελέσματα αντίθετα με την clock αλλά στο πρόγραμμα ενός καθηγητή όπου είδα και την χρήση της clock έβαλα αυτήν που μου προτείνατε και κοιτάξτε διαφορά 12.820000 sec 0.321711 sec ή καλύτερα tv.tv_usec/1000000 Ξέρει κάποιος για ποιον λόγο γίνεται?
tespa_2002 Δημοσ. 8 Δεκεμβρίου 2009 Δημοσ. 8 Δεκεμβρίου 2009 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;
pagratios Δημοσ. 8 Δεκεμβρίου 2009 Μέλος Δημοσ. 8 Δεκεμβρίου 2009 Έτσι λειτουργεί????? Εγώ νόμιζα απλά πως κάνεις gettimeofday(&tv,NULL) printf("%lf\n",(double)(tv.tv_usec/1000000)); Όπως το είδα και εδώ http://souptonuts.sourceforge.net/code/gettimeofday.c.html Το πρόγραμμα τρέχει στα 12sec
tespa_2002 Δημοσ. 10 Δεκεμβρίου 2009 Δημοσ. 10 Δεκεμβρίου 2009 Αν προσέξεις το link που αναφέρεις, εκεί χρησιμοποιεί και τα tv.sec. Είχα και εγώ ένα λαθάκι (είχα ξεχάσει τη 2η παράμετρο στην gettimeofday). Η λύση που σου έδωσα σου βγάζει το χρόνο σε microseconds. Γενικά είναι καλή λύση να αποφεύγεις τους δεκαδικούς όσο μπορείς. Επίσης, καλό είναι να κάνεις πρώτα την αφαίρεση των secs και των usecs ανάμεσα στους χρόνους λήξης και έναρξης και μετά να κάνεις ότι πολλαπλασιασμούς και διαιρέσεις θέλεις, για να αποφύγεις (ειδικά στους πολλαπλασιασμούς) προβλήματα overflow. Τέλος, η gettimeofday από μόνη της σου βγάζει το χρόνο που έχει περάσει από κάποια στιγμή το 1970... Οπότε έχει νόημα να την αξιοποιείς μόνο για να υπολογίσεις διαφορά χρόνου ανάμεσα σε 2 κλήσεις της.
pagratios Δημοσ. 10 Δεκεμβρίου 2009 Μέλος Δημοσ. 10 Δεκεμβρίου 2009 Τελικά την κατάφερα και είναι οκ!!! Ευχαριστώ για την βοήθεια
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.