【问题标题】:XNA game runs faster with debuggingXNA 游戏通过调试运行得更快
【发布时间】:2012-08-11 00:12:54
【问题描述】:

我有一个使用 C#(Visual Studio 2010 express)在 XNA 4.0 中制作的游戏。我的问题是它在调试时比直接运行可执行文件时运行得快得多。我确实尝试切换到发布模式并遇到相同的性能。关于可能导致这种情况的任何想法?

提前致谢。

【问题讨论】:

  • 调试器改变了垃圾回收的工作方式。值得检查您是否每帧都在泄漏内存。
  • @William'MindWorX'Mariager 如何继续这样做?
  • 请务必注意,C# 有两种不同的调试设置。一个控制构建输出(“调试”与“发布”构建)。另一个控制 CLR 和 JIT 如何实际运行您的代码(“开始调试”与“开始不调试”或只是在 IDE 之外运行您的程序)。至少您需要指定您使用的是哪个。但即便如此,您也不会提供几乎足够的信息。这可能是您需要发布代码的情况。您需要回答的另一个重要问题是:您如何衡量绩效?
  • @FutureMillennium,好吧,如果您监控内存使用情况,您会注意到它在不断攀升,然后随着垃圾收集器的清理而下降。如果泄漏太多内存,垃圾收集可能会很昂贵。如果我们得到一些代码,我们将有更好的机会提供帮助。
  • 你的情况听起来很像我之前的项目。游戏每分钟会随机减速几秒钟。最终很明显,这是由于 GC 清理了我们的懒惰——一分钟轻松分配和丢弃了数千个对象。我使用池化解决了这个问题。如果过度分配/解除分配是您的问题,我建议您也考虑池化。

标签: debugging xna


【解决方案1】:

确保 XNA 游戏是全屏的。根据我的经验,我注意到窗口模式下的帧减少了。

您还需要使用 Debug -> Start Performance Analysis 检查发生了什么。这将允许您查看哪些方法正在耗尽内存和使用情况。

如果您的游戏具有高级碰撞检测,请务必在该方面实现多线程。当我制作游戏时,我使用 ThreadPool 来处理碰撞方面。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 2010-12-24
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多