Διαδρομές
/
Go
Go
/
Ασκήσεις
/
Παράλληλη συχνότητα γραμμάτων
Παράλληλη συχνότητα γραμμάτων

Παράλληλη συχνότητα γραμμάτων

Μέτριο

Οδηγίες

Μέτρησε τη συχνότητα των γραμμάτων σε κείμενα χρησιμοποιώντας παράλληλο υπολογισμό.

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

Ταυτοχρονισμός έναντι παραλληλισμού

Η Go υποστηρίζει ταυτοχρονισμό μέσω "goroutines", οι οποίες ξεκινούν με τη λέξη-κλειδί go. Είναι ένας απλός, ελαφρύς και κομψός τρόπος να παρέχεις υποστήριξη ταυτοχρονισμού και αποτελεί ένα από τα μεγαλύτερα πλεονεκτήματα της γλώσσας.

Ίσως παρατηρήσεις ότι ενώ αυτή η άσκηση ονομάζεται Parallel letter frequency, ο όρος "Parallel" δεν χρησιμοποιείται πολύ συχνά στη Go. Οι Gophers προτιμούν τον όρο Concurrent για να περιγράψουν τη διαχείριση πολλαπλών ανεξάρτητων goroutines ("διεργασίες" ή "νήματα" σε άλλα πλαίσια γλωσσών). Αν και αυτοί οι όροι χρησιμοποιούνται συχνά εναλλακτικά, οι Gophers θέλουν να είναι τεχνικά ακριβείς και χρησιμοποιούν το "concurrent" όταν συζητούν τις φαινομενικά ταυτόχρονες εκτελέσεις των goroutines.

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

Για περισσότερα, ρίξε μια ματιά στην ανάρτηση του The Go Blog: Concurrency is not parallelism.

Πόροι για τον ταυτοχρονισμό

Αν είσαι καινούριος στις δυνατότητες ταυτοχρονισμού της Go, ορίστε μερικοί πόροι για να ξεκινήσεις. Σου προτείνουμε να ρίξεις μια ματιά σε αυτά πριν ξεκινήσεις αυτή την άσκηση:

Αν θέλεις να εμβαθύνεις πραγματικά, μπορείς να δοκιμάσεις το βιβλίο Concurrency in Go του @kat-co.

Δοκιμές

Σε αυτή την άσκηση, τα unit tests δεν μπορούν να κρίνουν αν έγραψες μια καλή ταυτόχρονη λύση. Αντ' αυτού, το καλύτερο είναι να λύσεις αυτή την άσκηση τοπικά και να τρέξεις τα benchmarks με go test -bench .. Σε μια καλή λύση, θα πρέπει να δεις ότι η ταυτόχρονη εκδοχή εμφανίζει μικρότερο αριθμό νανοδευτερολέπτων ανά πράξη (ns/op) από τη σειριακή εκδοχή.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Go Exercism

Έτοιμος να ξεκινήσεις την άσκηση Παράλληλη συχνότητα γραμμάτων;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Go με 34 έννοιες165 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.

Αναλυτική ματιά στο Παράλληλη συχνότητα γραμμάτων!

Εξερευνούμε τις διαφορές ανάμεσα στον ταυτοχρονισμό και τον παραλληλισμό, εξετάζοντας διαφορετικές προσεγγίσεις που ακολουθούν γλώσσες όπως η JavaScript, η Go, η Elixir και η Rust.