热门路径的分析和std :: vector部分? [关闭]

问题描述 投票:-2回答:1

我正在尝试使用我的应用程序找到性能问题的根源。使用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

c++ vector std sfml
1个回答
1
投票

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

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

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

bool的矢量也是打包的;这使得访问速度变慢。使用simpke算法,单个字节的向量可以更快。

请注意,生活中的花哨游戏会进行基于区域的散列以跳过大范围内的帧。

© www.soinside.com 2019 - 2024. All rights reserved.