Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何记录耗时的操作?(C#)_C#_Performance_Timer_Xna_Slowdown - Fatal编程技术网

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

如何记录耗时的操作?(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非常大时,这会导致减速吗?关于如何避免这种情

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

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

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

当Tilerray非常大时,这会导致减速吗?关于如何避免这种情况,有什么建议吗?

使用探查器,例如,或是高级和终极版的中内置的探查器


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

使用诸如的探查器,或内置于高级和终极版本的探查器

如果您已经在使用日志框架,比如log4Net,那么可以在代码段中添加日志,并提高日志的详细程度。

我通常使用命名空间中的类作为计时器。
和类中的函数,用于打印出经过的时间。

我通常使用命名空间中的类作为计时器。

和函数从类打印到打印经过的时间。

您是否在寻找与之不同的内容?我尝试使用探查器并更新了带有结果的帖子。我建议打开一个关于评测结果的新问题;修复一个应用程序不同于学习如何在任何应用程序中找到慢点。(您是否有可能填充应可见或不可见的小瓷砖列表,并删除每帧500000个瓷砖循环?),我可能会问一个新问题。你在寻找与之不同的东西吗?我试着使用profiler并用结果更新了帖子。我想建议你提出一个关于你的评测结果的新问题;修复一个应用程序不同于学习如何在任何应用程序中找到慢点。(您是否有可能填充较小的应可见或不可见的磁贴列表,并删除每帧500000个磁贴循环?)。