如何记录耗时的操作? (C#)

时间:2012-04-23 00:00:27

标签: c# performance timer xna slowdown

我的游戏进行了大量的计算,有时帧速率下降没有明显的原因,我想知道需要花费这么长时间来处理。如何创建一个计时器(或其他东西)来打印每个主要操作的经过时间?

运行默认探查器后,

UPD:,我发现瓶颈在我的磁贴阵列循环中。我有大约五十万个瓷砖,并且循环要求瓷砖的一个属性,每帧大约200个瓷砖。像这样:

if (tileArray[tile].this_tile_is_on_screen)
tileArray[tile].Draw();

当tileArray非常大时,这会导致速度减慢吗?关于如何避免它的任何建议?

2 个答案:

答案 0 :(得分:2)

使用EQATEC Profiler for .NET等分析器,或Visual Studio的Premium和Ultimate版本内置的分析器。

如果您已经在使用日志框架(例如log4Net),则可以使用日志记录部分代码,并提高日志记录的详细程度。

答案 1 :(得分:2)

我通常使用Stopwatch命名空间中的Diagnostic类作为计时器 WriteLine类的Debug函数用于打印输出以打印已用时间。