如何记录耗时的操作?(C#)
我的游戏运行了大量的计算,有时候帧率会在没有明显原因的情况下下降,我想知道是什么花费了这么长的时间来处理。如何创建一个计时器(或其他东西)来打印每个主要操作的运行时间 UPD:运行默认探查器后,我发现瓶颈在我的磁贴阵列循环中。我有大约50万块瓷砖,循环要求瓷砖的一个属性,每帧大约200块。像这样:如何记录耗时的操作?(C#),c#,performance,timer,xna,slowdown,C#,Performance,Timer,Xna,Slowdown,我的游戏运行了大量的计算,有时候帧率会在没有明显原因的情况下下降,我想知道是什么花费了这么长的时间来处理。如何创建一个计时器(或其他东西)来打印每个主要操作的运行时间 UPD:运行默认探查器后,我发现瓶颈在我的磁贴阵列循环中。我有大约50万块瓷砖,循环要求瓷砖的一个属性,每帧大约200块。像这样: if (tileArray[tile].this_tile_is_on_screen) tileArray[tile].Draw(); 当Tilerray非常大时,这会导致减速吗?关于如何避免这种情
if (tileArray[tile].this_tile_is_on_screen)
tileArray[tile].Draw();
当Tilerray非常大时,这会导致减速吗?关于如何避免这种情况,有什么建议吗?使用探查器,例如,或是高级和终极版的中内置的探查器
如果您已经在使用日志框架,如log4Net,则可以在代码部分添加日志,并提高日志的详细程度。使用诸如的探查器,或内置于高级和终极版本的探查器 如果您已经在使用日志框架,比如log4Net,那么可以在代码段中添加日志,并提高日志的详细程度。我通常使用命名空间中的类作为计时器。
和类中的函数,用于打印出经过的时间。我通常使用命名空间中的类作为计时器。
和函数从类打印到打印经过的时间。您是否在寻找与之不同的内容?我尝试使用探查器并更新了带有结果的帖子。我建议打开一个关于评测结果的新问题;修复一个应用程序不同于学习如何在任何应用程序中找到慢点。(您是否有可能填充应可见或不可见的小瓷砖列表,并删除每帧500000个瓷砖循环?),我可能会问一个新问题。你在寻找与之不同的东西吗?我试着使用profiler并用结果更新了帖子。我想建议你提出一个关于你的评测结果的新问题;修复一个应用程序不同于学习如何在任何应用程序中找到慢点。(您是否有可能填充较小的应可见或不可见的磁贴列表,并删除每帧500000个磁贴循环?)。