Track
/
C++
C++
/
Esercizi
/
Frequenza delle lettere in parallelo
Frequenza delle lettere in parallelo

Frequenza delle lettere in parallelo

Medio

Istruzioni

Conta la frequenza delle lettere nei testi usando il calcolo parallelo.

Il parallelismo consiste nel fare in parallelo cose che si possono fare anche in sequenza. Un esempio comune è contare la frequenza delle lettere. Usa il parallelismo per calcolare la frequenza totale di ogni lettera in un elenco di testi.

Note aggiuntive per l'implementazione in C++

Ci sono diversi modi per ottenere il parallelismo in C++. Il runner online di Exercism supporta C++17, quindi puoi usare le politiche di esecuzione della libreria degli algoritmi. Un'altra opzione è gestire manualmente i thread. Tieni però presente che generare un thread è piuttosto costoso (usare un pool di thread aiuterebbe).

Quando lavori in locale, puoi naturalmente usare quello che vuoi. Una soluzione che usa librerie non standard, però, molto probabilmente non funzionerà con il runner online di Exercism.

Benchmark

Quando lavori in locale, puoi facoltativamente eseguire un benchmark per avere un'idea del miglioramento delle prestazioni delle diverse implementazioni. Attivando il flag CMake EXERCISM_INCLUDE_BENCHMARK si abilita il benchmark:

cmake -DEXERCISM_RUN_ALL_TESTS=1 -DEXERCISM_INCLUDE_BENCHMARK=1 .

Supporto dei compilatori agli algoritmi paralleli

L'implementazione della libreria standard C++ da parte di GCC (libstdc++) si basa su TBB. Se TBB non è disponibile, verrà usata una versione sequenziale come ripiego, anche quando è richiesta l'esecuzione parallela.

Su Ubuntu, devi installare il pacchetto libtbb-dev:

apt-get install libtbb-dev

Su macOS, puoi usare Homebrew per installare TBB:

brew install tbb

A partire dalla versione 17, libc++ di Clang offre un supporto sperimentale e parziale per gli algoritmi paralleli. Per attivarlo, bisogna passare il flag del compilatore -fexperimental-library.

Apple Clang 15 e versioni precedenti non supportano gli algoritmi paralleli.

Su Linux e macOS ti consigliamo di usare GCC (insieme alla libstdc++ predefinita) per questo esercizio.

MSVC di Microsoft supporta gli algoritmi paralleli almeno da VS 2017 15.7, senza dover installare librerie aggiuntive.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
C++ Exercism

Vuoi iniziare Frequenza delle lettere in parallelo?

Iscriviti a Exercism per imparare e padroneggiare C++ con 19 concetti100 esercizi e il mentoring di persone reali, tutto gratis.

Approfondimento su Frequenza delle lettere in parallelo!

Esploriamo le differenze tra concorrenza e parallelismo, esaminando i diversi approcci adottati da linguaggi come JavaScript, Go, Elixir e Rust.