轨道
/
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

从 17 版起,Clang 的 libc++ 对并行算法提供实验性的部分支持。 要启用它,需要加上 -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 等语言采用的不同做法。