學習軌道
/
C++
C++
/
練習
/
平行字母頻率
平行字母頻率

平行字母頻率

中等

說明

使用平行運算計算多段文字中字母出現的頻率。

平行運算的重點,在於把那些也能循序完成的工作改成同時進行。 常見的例子就是計算字母出現的頻率。 請運用平行運算,計算由多段文字組成的陣列中,每個字母的總出現頻率。

C++ 實作補充說明

在 C++ 中有幾種方式可以達到平行處理。 Exercism 的線上執行器支援 C++17,因此你可以使用演算法程式庫中的執行政策。 另一個選擇是手動管理執行緒。 不過要注意,建立執行緒的成本相當高(改用執行緒集區會有所幫助)。

在本機開發時,你當然可以使用任何你想要的工具。 不過,使用非標準程式庫的解法很可能無法在 Exercism 線上執行器上運作。

基準測試

在本機開發時,你可以選擇執行基準測試,藉此了解不同實作的加速效果。 啟用 CMake 旗標EXERCISM_INCLUDE_BENCHMARK即可啟用基準測試:

cmake -DEXERCISM_RUN_ALL_TESTS=1 -DEXERCISM_INCLUDE_BENCHMARK=1 .

編譯器對平行演算法的支援

GCC 對 C++ 標準程式庫(libstdc++)的實作依賴 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 至少從 VS 2017 15.7 起就支援平行演算法,不需要安裝任何額外的程式庫。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
C++ Exercism

準備好開始 平行字母頻率 了嗎?

註冊 Exercism,透過 19 個概念100 個練習 和真人引導來學習並精通 C++,全部免費。

深入探索 平行字母頻率!

我們會探討並行與平行之間的差異,並看看 JavaScript、Go、Elixir 和 Rust 等語言採用的不同作法。