“秒杀”探测器?

时间:2010-08-20 07:48:31

标签: .net profiling xna performance

我正在写一个游戏,虽然它的表现在大多数时候都很好,但它有时会慢慢爬行。普通的剖析器在这方面没有帮助,因为它们记录了我的游戏运行的整个时间,并且滞后部分中的重要信息在所有平滑部分被稀释。是否有任何工具或库可以帮助我找出问题?

2 个答案:

答案 0 :(得分:3)

你几乎肯定会受到垃圾收集的打击。

是的,有一个工具可以解决这个问题。你想要CLR Profiler。这将显示您准确分配内存的位置。

在Xbox上,垃圾收集器将在每1MB分配后运行,并且速度很慢。 Windows GC更宽容,但仍然可能导致帧速率抖动。

避免垃圾收集口吃的最佳方法是在游戏运行时不分配任何东西。在加载屏幕期间进行分配,用户不会注意到这一点。

我建议在Shawn Hargreaves的博客上阅读this postthis post

答案 1 :(得分:1)

你说你要从一帧花费16ms到3000ms。因此,在很长一段时间内,花费(3000 - 16)/ 3000 = 99.5%的时间做一些你没想到的事情。

在这3秒钟内,你怎么知道它在做什么?

暂停几次,然后检查调用堆栈。

不会看到它在每次暂停时所做的事情的几率为0.5%

如果它在垃圾收集器中,这应该确认它。如果它正在做其他事情,它也会告诉你。