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

时间:2019-02-17 22:30:33

标签: c++ vector std sfml

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

enter image description here enter image description here

我是C ++的新手,所以不确定std::vector<bool,std::allocator<bool> >::operator[]是什么东西,或者这是否真的是程序中的瓶颈。任何帮助表示赞赏。

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

1 个答案:

答案 0 :(得分:1)

在生活游戏中,您要做的是阅读状态以做出决定。可以肯定,那是大多数时间。

由于您在虚拟地址空间中的std向量的std向量,因此您的访问权限几乎是随机的。具有跨度向量的单个缓冲区将显着提高内存局部性。

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

布尔的向量也被打包;这会使访问速度变慢。使用Simpke算法,单字节向量可以更快。

请注意,奇特的生活类游戏会进行基于区域的哈希运算,以在大范围内跳过帧。