Η μέτρηση του χρόνου εκτέλεσης του κώδικα είναι απαραίτητη για τη βελτιστοποίηση της απόδοσης σε εφαρμογές Java. Βοηθά τους προγραμματιστές να εντοπίσουν τα σημεία συμφόρησης και να βελτιώσουν την αποδοτικότητα.

Χρήση του System.nanoTime ()

Η μέθοδος System.nanoTime() προσφέρει μέτρηση του χρόνου υψηλής ανάλυσης. Επιστρέφει την τρέχουσα τιμή του ακριβέστερου διαθέσιμου χρονοδιακόπτη συστήματος, σε νανοδευτερόλεπτα. Για τη μέτρηση του χρόνου εκτέλεσης, καταγράψτε τον χρόνο έναρξης πριν από την εκτέλεση του κώδικα και τον χρόνο λήξης μετά. Η διαφορά δείχνει τον χρόνο που πέρασε.

Παράδειγμα:

μακρύς χρόνος εκκίνησης = System.nanoTime()·

// κωδικός για τη μέτρηση

μακρύς χρόνος λήξης = System.nanoTime()·

διάρκεια = τελικός χρόνος - startTime;

Χρήση συστήματος.τρέχων χρόνοςMillis()

Η μέθοδος System.currentTimeMillis() παρέχει τον τρέχοντα χρόνο σε χιλιοστά του δευτερολέπτου. Είναι λιγότερο ακριβής από αλλά κατάλληλος για τη μέτρηση μεγαλύτερων διαρκών. Παρόμοια με την προηγούμενη μέθοδο, καταγράψτε την ώρα έναρξης και λήξης γύρω από το μπλοκ κώδικα.

Παράδειγμα:

μακρύς χρόνος έναρξης = System.currentTimeMillis()·[LFT:1]

// κωδικός για τη μέτρηση

long endTime = System.currentTimeMillis()·[LFT:1]

διάρκεια = τελικός χρόνος - startTime;

Χρήση της Άμεσης Τάξης της Ιάβας

Η σειριανή τάξη από το ]java.time προσφέρει μια σύγχρονη προσέγγιση στη μέτρηση του χρόνου. Παρέχει νανοδευτερόλεπτο ακρίβεια και είναι κατάλληλη για μέτρηση των διαρκών.

Παράδειγμα:

Απευθείας εκκίνηση = Instant.now(;)

// κωδικός για τη μέτρηση

Απευθείας τέλος = Instant.now(;)

Διάρκεια ζωής = διάρκεια.μεταξύ(start, end);

Παράδειγμα πραγματικού κόσμου

Ας υποθέσουμε ότι θέλετε να μετρήσετε πόσο χρόνο χρειάζεται για να ταξινομήσετε μια μεγάλη σειρά. Χρησιμοποιώντας System.nanoTime(), μπορείτε να υλοποιήσετε τα ακόλουθα:

int[] συστοιχία = νέα int[1 000 000];

//συστοιχία πληθυσμού

μακρύς χρόνος εκκίνησης = System.nanoTime()·

Arrays.sort(array);

μακρύς χρόνος λήξης = System.nanoTime()·

System.out.printn( ⁇ Sorting take ⁇ + (endTime - startTime) + ⁇ nanoseconds ⁇ ;