Compte la fréquence des lettres dans des textes en utilisant le calcul parallèle.
Le parallélisme consiste à faire en parallèle des choses qui peuvent aussi être faites de manière séquentielle. Un exemple courant est le comptage de la fréquence des lettres. Utilise le parallélisme pour calculer la fréquence totale de chaque lettre dans un tableau de textes.
Il y a plusieurs façons de mettre en œuvre du parallélisme en C++. L'exécuteur en ligne d'Exercism prend en charge C++17, on peut donc utiliser les politiques d'exécution de la bibliothèque d'algorithmes. Une autre option consiste à gérer les threads manuellement. Note cependant que créer un thread coûte assez cher (utiliser un pool de threads aiderait).
En local, tu peux bien sûr utiliser ce que tu veux. Cependant, une solution qui utilise des bibliothèques non standard ne fonctionnera très probablement pas avec l'exécuteur en ligne d'Exercism.
En local, tu peux éventuellement lancer un benchmark pour te donner une idée de l'accélération qu'apportent les différentes implémentations.
Activer l'option CMake EXERCISM_INCLUDE_BENCHMARK active le benchmark :
cmake -DEXERCISM_RUN_ALL_TESTS=1 -DEXERCISM_INCLUDE_BENCHMARK=1 .
L'implémentation de la bibliothèque standard C++ par GCC (libstdc++) s'appuie sur TBB.
Si TBB n'est pas disponible, une version séquentielle est utilisée en repli, même quand l'exécution parallèle est demandée.
Sous Ubuntu, tu dois installer le paquet libtbb-dev :
apt-get install libtbb-dev
Sous macOS, tu peux utiliser Homebrew pour installer TBB :
brew install tbb
À partir de la version 17, la libc++ de Clang prend en charge les algorithmes parallèles de manière expérimentale et partielle.
Pour l'activer, il faut passer l'option de compilation -fexperimental-library.
Apple Clang 15 et les versions antérieures ne prennent pas en charge les algorithmes parallèles.
Sous Linux et macOS, on te recommande d'utiliser GCC (avec la libstdc++ par défaut) pour cet exercice.
Le MSVC de Microsoft prend en charge les algorithmes parallèles depuis au moins VS 2017 15.7, sans qu'il soit nécessaire d'installer une bibliothèque supplémentaire.
Inscris-toi sur Exercism pour apprendre et maîtriser C++ avec 19 concepts100 exercices, et un vrai mentorat humain, le tout gratuitement.
On explore les différences entre concurrence et parallélisme, en examinant les différentes approches adoptées par des langages comme JavaScript, Go, Elixir et Rust.