热路径的分析和 std::vector 部分?

Profiling and std::vector part of Hot Path?

我正在尝试查找我的应用程序性能问题的根源。使用 Visual Studio 2017 分析工具我得到了这个结果:

我对 C++ 比较陌生,所以我不确定这个 std::vector<bool,std::allocator<bool> >::operator[] 是什么东西,或者这是否真的是我程序的瓶颈。感谢任何帮助。

这是我的代码: https://github.com/k-vekos/GameOfLife/tree/multithread

在人生的游戏中,你所做的就是阅读状态来做出决定。当然,大部分时间都是这样。

由于虚拟地址 space 中的 std 向量的 std 向量,您的访问几乎是随机的。具有跨度向量的单个缓冲区将显着改善内存局部性。

如果您在这些位置保留 0 或 1,则执行 += 而不是分支可能会有所帮助。

bool的向量也是packed bits;这使得访问速度变慢。使用您的 simpke 算法,单字节向量可能会更快。

请注意,精彩的生活游戏会进行基于区域的哈希处理以在大范围内跳帧。