gpt4 book ai didi

c++ - 如何诊断/分析瞬时性能命中,C++

转载 作者:搜寻专家 更新时间:2023-10-31 01:04:53 25 4
gpt4 key购买 nike

已解决:当简单的分析不够有效时,我编写了一个工具来告诉我哪里会出现性能问题。有关该工具如何工作的基本信息在下面接受的答案中。来源可以在这里找到:http://pastebin.com/ETiW8hE8 (一定要在你正在测试的程序中打开调试符号)

我用 C++ 构建了一个游戏引擎,我注意到在某个关卡的特定区域存在短暂的性能下降。游戏会完全停止大约半秒钟,然后愉快地继续。我已经尝试对此进行分析,但很难隔离这种情况,因为我还必须加载 map 并执行导致性能下降的游戏内任务。我可以自动加载 map 并跳过显示菜单等,并将这些配置文件结果与一组类似的控制数据进行比较(所有相同的步骤但实际上没有启动性能命中),但它没有显示任何明显的东西。

我正在使用 gmon 进行分析。

这是一个大型应用程序,包含许多类和函数。性能下降只会发生一次,因此无法在一次执行期间多次触发问题以使我的分析结果饱和,从而使有问题的功能在分析结果中更加明显。

我还能做什么?

最佳答案

我会做的是尝试 grab a stack sample在它卡住的那半秒。这将需要一个闹钟计时器设置为在未来的某个小时间关闭,比如 100 毫秒。然后在一些循环中,比如帧显示循环,通常需要不到 100 毫秒的时间来重复,不断重置计时器。这样一来,如果您不继续抚摸它,它就会充当看门狗并吠叫。

然后,在定时器中断处理程序中设置一个断点。当它到达那里时,你知道你正处于糟糕的时间段。然后只显示调用堆栈,它应该会告诉您问题出在哪里。

您可能需要重复这个过程几次。

关于c++ - 如何诊断/分析瞬时性能命中,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23234247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com