dop Δημοσ. 17 Μαρτίου 2011 Δημοσ. 17 Μαρτίου 2011 From http://blogs.msdn.com/b/oldnewthing/archive/2005/09/02/459952.aspx "If you're looking for high accuracy, then you'd be better off playing around with the QueryPerformanceCounterfunction. You have to make some tradeoffs, however. For one, the precision of the result is variable; you need to call the QueryPerformanceFrequency function to see what the precision is. Another tradeoff is that the higher accuracy of QueryPerformanceCounter can be slower to obtain." Για ένα real-time σύστημα, το πόσο κοστίζει να πάρεις μια μέτρηση ίσως έχει νόημα.
V.I.Smirnov Δημοσ. 17 Μαρτίου 2011 Δημοσ. 17 Μαρτίου 2011 @dop Πουθενά δεν έχω δει το όποιο overhead της QueryPerformanceCounter() να αποτελεί πρακτικό περιορισμό σε ακριβείς μετρήσεις χρόνου. Και εν πάση περιπτώση, δεν υπάρχει (ή δεν ξέρω) κάτι καλύτερο. Αντίθετα, αυτό που πρέπει να προσεχθεί είναι ότι αυτή και όμοιές της λειτουργούν σωστά υπό την προϋπόθεση ότι το τρέχον νήμα δεν προεκτοπίζεται. Όπερ σημαίνει ότι οι όποιες ρουτίνες κάνουν profilling πρέπει να είναι όσο το δυνατόν μικρές και σύντομες για να ολοκληρώνουν την δουλειά τους εγκαίρως - πράγμα που συνήθως γίνεται. -
dop Δημοσ. 17 Μαρτίου 2011 Δημοσ. 17 Μαρτίου 2011 Δεν το έχεις δει - αυτό δε σημαίνει ότι δεν υπάρχει. Και πάντα εξαρτάται το τι μετράς, που και πως. Για την ιστορία, σε συγκεκριμένο μηχάνημα (Intel) η QPC μου έδινε συνέχεια χειρότερα αποτελέσματα από την GetTickCount σε ένα μικρό loop (επειδή σε εκείνο το μηχάνημα είχε μεγαλύτερο overhead).
V.I.Smirnov Δημοσ. 17 Μαρτίου 2011 Δημοσ. 17 Μαρτίου 2011 Μπορεί, αλλά δεν είναι ο κανόνας. Σε ότι αφορά τα συνήθη pc, όταν πρόκειται για μετρήσεις ακριβείας σχεδόν πάντα χρησιμοποιείται η QPC και οι όμοιές της, στις δε "δύσκολες" περιπτώσεις σιγουρεύεται ότι δεν προεκτοπίζεται το νήμα της και ότι χρονομετράται το συγκεκριμένο νήμα που κάνει τον υπολογισμό. Ειδικά για την κίνηση και για τον υπολογισμό των FPS ή του frame time, η QPC είναι η στάνταρ επιλογή. -
dop Δημοσ. 17 Μαρτίου 2011 Δημοσ. 17 Μαρτίου 2011 Πάμε ξανά: Η GetTickCount() ΙΣΩΣ έχει χαμηλότερο overhead... Το οποίο σημαίνει: δοκιμάζεις την QPC και αν σου κάνει νερά, δοκιμάζεις και την άλλη. *
V.I.Smirnov Δημοσ. 17 Μαρτίου 2011 Δημοσ. 17 Μαρτίου 2011 Eντάξει, αφού το έχεις δει και στην πράξη δεν επιμένω. Θα το έχω υπόψη μου. Καμιά σαν την QPC αλλά όχι Windows specific υπάρχει ; Kαι κάτι άλλο : οι συναρτήσεις χρονομέτρησης που έχει το OpenMP και το MPI υποθέτω ότι επίσης δεν είναι ακριβείς. Ή όχι ; -
dop Δημοσ. 17 Μαρτίου 2011 Δημοσ. 17 Μαρτίου 2011 Υπάρχει το PAPI (http://icl.cs.utk.edu/papi/) που είναι μία από τις αγαπημένες βιβλιοθήκες των HPC programmers. Η παλιά έκδοση γινόταν compile σε Windows, αλλά όχι πλέον. Εν τέλει, όταν χρειάστηκα κάτι που να δουλεύει παντού, έκανα το δικό μου API σε C++.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.