Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

CPU time C#

Îåêßíçóå áðü ôï ìÝëïò Alexander. Τελευταία δημοσίευση από το μέλος Dimitris Papadimitriou στις 12-04-2008, 10:44. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  10-04-2008, 13:00 41457

    CPU time C#

    Καλησπέρα,

    Πώς μπορώ να μετρήσω τη cpu time που τρέχει κάποιο κομμάτι στον κώδικά μου;

    Η QueryPerformanceCounter (που χρησιμοποιείται από τη StopWatch) πώς λειτουργεί ακριβώς;

    Αυτό που θέλω είναι κάτι σαν την clock() της C++, που μετράει ticks από την αρχή της εκτέλεσης του προγράμματος.
  •  10-04-2008, 13:56 41458 σε απάντηση της 41457

    Απ: CPU time C#

    Μπορείς να χρησιμοποιήσεις την Environment.GetTickCount()  Environment.TickCount()

    Παίρνεις την τιμή μια φορά όταν ξεκινήσει η διαδικασία και άλλη μια όταν τελειώσει. Τις αφαιρείς, και έχεις τα Ticks που έχει διαρκέσει. 


    Vir prudens non contra ventum mingit
  •  10-04-2008, 19:49 41466 σε απάντηση της 41458

    Απ: CPU time C#

    Ευχαριστώ, αλλά το Environment.TickCount έχει ακρίβεια millisecond, ενώ το DateTime.Ticks έχει ακρίβεια 100 nanosecond. Δηλαδή για παράδειγμα κάνω αυτό:

                int j = 0;
                long t0 = Environment.TickCount;
                DateTime time0 = DateTime.Now;

                for (int i = 0; i < 999999999; i++) { j += i; }

                long t1 = Environment.TickCount;
                DateTime time1 = DateTime.Now;

                Console.WriteLine("Ticks Elapsed: {0}", t1 - t0);
                Console.WriteLine("Time Elapsed: {0}", time1.Ticks - time0.Ticks);


                Console.ReadLine(); return 0;

    και παίρνω σαν αποτέλεσμα:

    Ticks Elapsed: 5078
    Time Elapsed: 50781250

    Πέρα απ'αυτό όμως, με την Environment.TickCount μετράω τον χρόνο που το πρόγραμμα τρέχει στη cpu ή τον πραγματικό χρόνο μεταξύ δύο "μετρήσεων" Environment.TickCount ;
  •  10-04-2008, 21:24 41469 σε απάντηση της 41466

    Απ: CPU time C#

    Όπως αναφέρει στο documentation, είναι το δεύτερο. Αν θες να βρεις τον χρόνο που αφιερώνεται από τη CPU στο process σου, θα πρέπει να χρησιμοποιήσεις τους performance counters. Στην συγκεκριμένη περίπτωση μάλλον το "Process", "% Processor Time". Για τη System.Diagnostics.PerformanceCounter δες εδώ: http://msdn2.microsoft.com/en-us/library/system.diagnostics.performancecounter(VS.71).aspx  


    Vir prudens non contra ventum mingit
  •  11-04-2008, 16:01 41480 σε απάντηση της 41469

    Απ: CPU time C#

    Ευχαριστώ!

  •  11-04-2008, 20:04 41481 σε απάντηση της 41480

    Απ: CPU time C#

    Υπαρχει και ετοιμη εφαρμογη που μετραει χρονους εκτελεσης εντολων .ΝΕΤ και κανει συγκρισεις αποτελεσματων.

    http://leeholmes.com/projects/perfcompare/index.html

    Σημερα το βρηκα αυτο...πολυ χρησιμο προγραμματακι. Μπορεις να δεις και την Intermediate language στην οποια γινεται compile οι εντολες.

    ****Προς τους Admin
    Κατι πρεπει να γινει με το Opera γιατι δεν εχω καμια επιλογη μορφοποιησης οταν ποσταρω κατι.
  •  12-04-2008, 10:44 41482 σε απάντηση της 41481

    Απ: CPU time C#

    kallileo:
    ****Προς τους Admin Κατι πρεπει να γινει με το Opera γιατι δεν εχω καμια επιλογη μορφοποιησης οταν ποσταρω κατι.

    Μπορείς να στέλνεις παρατηρήσεις και προβλήματα σε αυτό το forum: dotNetZone.gr, γιατί εδώ μπορεί να διαφύγουν της προσοχής του admin.


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems