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

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

Μέτριο

Οδηγίες

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

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

Πρόσθετες σημειώσεις για την υλοποίηση σε C++

Υπάρχουν αρκετοί τρόποι για να πετύχεις παραλληλισμό στη C++. Ο διαδικτυακός εκτελεστής του Exercism υποστηρίζει C++17, οπότε μπορείς να χρησιμοποιήσεις πολιτικές εκτέλεσης από τη βιβλιοθήκη αλγορίθμων. Μια άλλη επιλογή είναι να διαχειρίζεσαι χειροκίνητα νήματα. Ωστόσο, πρόσεξε ότι η δημιουργία ενός νήματος είναι αρκετά δαπανηρή (η χρήση μιας δεξαμενής νημάτων θα βοηθούσε).

Όταν δουλεύεις τοπικά, μπορείς φυσικά να χρησιμοποιήσεις ό,τι θέλεις. Ωστόσο, μια λύση που χρησιμοποιεί μη τυπικές βιβλιοθήκες πιθανότατα δεν θα δουλέψει με τον διαδικτυακό εκτελεστή του Exercism.

Benchmark

Όταν δουλεύεις τοπικά, μπορείς προαιρετικά να τρέξεις ένα benchmark για να πάρεις μια ιδέα για την επιτάχυνση που προσφέρουν διαφορετικές υλοποιήσεις. Η ενεργοποίηση της σημαίας CMake EXERCISM_INCLUDE_BENCHMARK ενεργοποιεί το benchmark:

cmake -DEXERCISM_RUN_ALL_TESTS=1 -DEXERCISM_INCLUDE_BENCHMARK=1 .

Υποστήριξη παράλληλων αλγορίθμων από τους μεταγλωττιστές

Η υλοποίηση της τυπικής βιβλιοθήκης της C++ (libstdc++) από τον GCC βασίζεται στο TBB. Αν το TBB δεν είναι διαθέσιμο, θα χρησιμοποιηθεί σειριακή έκδοση ως εναλλακτική, ακόμη και όταν έχει ζητηθεί παράλληλη εκτέλεση.

Στο Ubuntu, χρειάζεται να εγκαταστήσεις το πακέτο libtbb-dev:

apt-get install libtbb-dev

Στο macOS, μπορείς να χρησιμοποιήσεις το Homebrew για να εγκαταστήσεις το TBB:

brew install tbb

Το Clang libc++ από την έκδοση 17 έχει πειραματική, μερική υποστήριξη για παράλληλους αλγορίθμους. Για να την ενεργοποιήσεις, πρέπει να δώσεις τη σημαία μεταγλωττιστή -fexperimental-library.

Το Apple Clang 15 και οι προηγούμενες εκδόσεις δεν υποστηρίζουν παράλληλους αλγορίθμους.

Στο Linux και στο macOS προτείνουμε να χρησιμοποιήσεις τον GCC (μαζί με την προεπιλεγμένη libstdc++) για αυτή την άσκηση.

Ο MSVC της Microsoft υποστηρίζει παράλληλους αλγορίθμους τουλάχιστον από το VS 2017 15.7, χωρίς να χρειάζεται να εγκαταστήσεις κάποια επιπλέον βιβλιοθήκη.

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

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

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

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

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