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