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

本文关键字:操作 记录 何记录 | 更新日期: 2023-09-27 18:32:06

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

UPD:运行默认探查器后,我发现瓶颈出在我的磁贴数组循环中。我有大约五十万个瓷砖,循环要求瓷砖的一个属性,每帧大约 200 块瓷砖。这样:

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

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

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

使用探查器,例如 EQATEC Profiler for .NET,或内置于 Visual Studio 的高级版和旗舰版中的探查器。

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

我通常使用诊断命名空间中的秒表类作为计时器。
和 Debug 类的 WriteLine 函数,用于打印输出以打印出经过的时间。