Βελτιώστε την απόδοση των προγραμμάτων Go σας χρησιμοποιώντας την τεχνική προφίλ.

Το προφίλ είναι μια τεχνική που χρησιμοποιείται συνήθως στον κύκλο ανάπτυξης λογισμικού για την ανάλυση της απόδοσης του α πρόγραμμα, συνήθως για σύγκριση μεταξύ προγραμμάτων ή για εντοπισμό σημείων συμφόρησης και τομέων βελτίωσης για α πρόγραμμα. Το προφίλ περιλαμβάνει τη μέτρηση και την ανάλυση διαφόρων μετρήσεων, όπως η χρήση μνήμης, η χρήση της CPU, ο χρόνος εκτέλεσης και άλλα στατιστικά στοιχεία σε επίπεδο συστήματος.

Το προφίλ στοχεύει στον εντοπισμό τμημάτων ενός προγράμματος που καταναλώνουν τους περισσότερους πόρους, ώστε να μπορεί να βελτιστοποιηθεί για καλύτερη απόδοση. Το προφίλ μπορεί επίσης να βοηθήσει στον εντοπισμό σφαλμάτων, στη βελτιστοποίηση της διαχείρισης μνήμης και στον συντονισμό ταυτόχρονης λειτουργίας.

Προφίλ στο Go

Υπάρχουν πολλά εργαλεία για δημιουργία προφίλ στο Go. Μερικά δημοφιλή εργαλεία περιλαμβάνουν το ενσωματωμένο εργαλείο δημιουργίας προφίλ pprof της Go και δημοφιλή πακέτα τρίτων, όπως τα πακέτα Go Tool Trace και Go-Torch.

instagram viewer

ο προφ το πακέτο είναι μέρος του χρόνο εκτέλεσης πακέτο. ο προφ Το πακέτο παρέχει λειτουργικότητα για την εγγραφή δεδομένων προφίλ χρόνου εκτέλεσης σε μορφές που το προφ εργαλείο οπτικοποίησης μπορεί να ερμηνεύσει.

Δείτε πώς μπορείτε να εισαγάγετε το προφ πακέτο στα προγράμματά σας Go:

εισαγωγή"Προφ"

Το Go παρέχει πολλές εντολές και σημαίες για να εργαστείτε με τον πηγαίο κώδικα. Εκτελέστε το παρακάτω εργαλείο εντολή για πρόσβαση στα αποτελέσματα δημιουργίας προφίλ σε διάφορες μορφές.

πηγαίνω εργαλείο pprof

Η εντολή εξάγει τις λεπτομέρειες χρήσης σχετικά με το προφ εντολή.

Προφίλ CPU in Go

Το προφίλ CPU μετρά τον χρόνο που αφιερώνει ένα πρόγραμμα κατά την εκτέλεση λειτουργιών. Το προφίλ CPU είναι χρήσιμο για τον εντοπισμό τμημάτων του κώδικα που καταναλώνουν τον περισσότερο χρόνο CPU.

ο προφ Το πακέτο παρέχει λειτουργίες για τη συλλογή προφίλ CPU, την έναρξη και τη διακοπή του προφίλ CPU και μια λειτουργία για την εγγραφή δεδομένων προφίλ σε αρχεία.

Δείτε πώς μπορείτε να ξεκινήσετε και να σταματήσετε ένα προφίλ CPU και να γράψετε τα δεδομένα σε ένα αρχείο προφίλ:

εισαγωγή (
"os"
"runtime/pprof"
)

funcκύριος() {
f, err := os. Δημιουργώ("cpu_profile.prof")
αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}
αναβάλλω φά. Κλείσε()

err = pprof. StartCPUProfile (f)
αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}
αναβάλλω προφ. StopCPUProfile()

// Κώδικας προς δημιουργία προφίλ
}

ο κύριος η λειτουργία δημιουργεί ένα αρχείο και κλείνει τη ροή αρχείων με a αναβάλλω δήλωση και το Κλείσε λειτουργία του στιγμιότυπου αρχείου. ο StartCPUProfile η λειτουργία ξεκινά ένα προφίλ CPU και εγγράφει τα δεδομένα στο αρχείο και το StopCPUProfile κλείνει τη ροή προφίλ με ένα αναβάλλω δήλωση. Μετά την εκκίνηση και τη διακοπή του προφίλ της CPU, μπορείτε να προχωρήσετε στη σύνταξη του κώδικα που θέλετε να αναλύσετε.

Εδώ είναι το αποτέλεσμα της εκτέλεσης του προφ εντολή με το αρχείο προφίλ από το πρόγραμμα:

Τρέχοντας το προφ εντολή με ένα αρχείο ξεκινά ένα διαδραστικό κέλυφος που σας επιτρέπει να εξερευνήσετε τα δεδομένα προφίλ. Μπορείτε να χρησιμοποιήσετε εντολές όπως μπλουζα και λίστα για να δείτε τις συναρτήσεις που χρειάζονται περισσότερο χρόνο για να εκτελεστούν.

Προφίλ μνήμης στο Go

Το προφίλ μνήμης είναι μια τεχνική που χρησιμοποιείται για τον εντοπισμό διαρροών μνήμης και δαπανηρής χρήσης μνήμης στον κώδικα, μετρώντας τη χρήση μνήμης των συναρτήσεων στον κώδικα.

Μπορείτε να ξεκινήσετε ένα προφίλ μνήμης με το WriteHeapProfile λειτουργία. ο WriteHeapProfile η συνάρτηση λαμβάνει το παράδειγμα αρχείου και εγγράφει τα δεδομένα προφίλ στο αρχείο.

εισαγωγή (
"os"
"runtime/pprof"
)

funcκύριος() {
f, err := os. Δημιουργώ("mem_profile.prof")
αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}
αναβάλλω φά. Κλείσε()

err = pprof. WriteHeapProfile (στ)
αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}

// Κώδικας προς δημιουργία προφίλ
}

ο κύριος η συνάρτηση δημιουργεί ένα αρχείο προφίλ και το WriteHeapProfile Η συνάρτηση λαμβάνει την παρουσία του αρχείου ως όρισμα και επιστρέφει έναν τύπο σφάλματος εγγραφής μετά την εγγραφή στο αρχείο. Μπορείτε περαιτέρω χειριστείτε το σφάλμα σύμφωνα με τις απαιτήσεις σας.

Αποκλεισμός προφίλ με Go

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

ο Ψάχνω Η συνάρτηση επιστρέφει το προφίλ με το όνομα μιας καθορισμένης συμβολοσειράς και το Γράφω σε λειτουργία του Ψάχνω Η λειτουργία γράφει ένα στιγμιότυπο του προφίλ με μορφή pprof στο αρχείο.

Δείτε πώς μπορείτε να εφαρμόσετε το προφίλ μπλοκ για τα προγράμματα Go σας:

εισαγωγή (
"os"
"runtime/pprof"
)

funcκύριος() {
f, err := os. Δημιουργώ("block_profile.prof")
αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}
αναβάλλω φά. Κλείσε()

err = pprof. Ψάχνω("ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ").WriteTo (f, 0)
αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}

// Κώδικας προς δημιουργία προφίλ
}

Το πρόγραμμα δημιουργεί ένα αρχείο για την αποθήκευση των δεδομένων προφίλ μπλοκ, αναζητά μπλοκ με το Ψάχνω λειτουργία και εγγράφει τα δεδομένα προφίλ μπλοκ στο αρχείο.

Trace Profiling With Go

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

ο ίχνος Το πακέτο παρέχει λειτουργίες για δημιουργία προφίλ ίχνους. Αυτό το πακέτο είναι επίσης μέρος του χρόνο εκτέλεσης πακέτο.

εισαγωγή (
"os"
"χρόνος εκτέλεσης/ίχνος"
)

funcκύριος() {
f, err := os. Δημιουργώ("ίχνος.έξω")
αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}
αναβάλλω φά. Κλείσε()

err = ίχνος. Έναρξη (στ)
αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}
αναβάλλω ίχνος. Να σταματήσει()

// Κώδικας προς δημιουργία προφίλ
}

Το πρόγραμμα δημιουργεί ένα αρχείο ανίχνευσης για την αποθήκευση των δεδομένων ανίχνευσης, ξεκινά τον ιχνηλάτη με το Αρχή συνάρτηση που λαμβάνει την παρουσία του αρχείου και επιστρέφει έναν τύπο σφάλματος και αναβάλλει τον ιχνηλάτη με το Να σταματήσει λειτουργία.

Το Go παρέχει επίσης εργαλεία για τη μορφοποίηση του πηγαίου κώδικα. Παράλληλα με τα εργαλεία δημιουργίας προφίλ, μπορείτε να χρησιμοποιήσετε τα εργαλεία μορφοποίησης για να διατηρήσετε πρότυπα κώδικα. ο gofmt Το εργαλείο είναι ένα ενσωματωμένο εργαλείο μορφοποίησης που μπορείτε να χρησιμοποιήσετε για να μορφοποιήσετε τον πηγαίο κώδικα Go σας με βάση καθορισμένους κανόνες για τα πακέτα σας.