【发布时间】:2011-03-17 04:59:37
【问题描述】:
我有这个循环
// go through each alumni
foreach (esDL.Alumni currAlumni in allAlumnis)
{
... loop logic
}
这几乎是瞬间运行。
当我像这样输入跟踪或调试语句时......
foreach (esDL.Alumni currAlumni in allAlumnis)
{
... same loop logic
Trace.WriteLine("hi");
Trace.Indent();
Trace.WriteLine("written");
}
这大大减慢了速度。用于跟踪或调试
这是为什么呢?有没有办法防止这种情况发生?
我只附加了默认监听器。
编辑 - 经过更多测试,我发现 Trace.Indent 让它变得非常非常慢。但是只有 WriteLine 仍然会大大降低性能。 Indent 方法有什么问题?
【问题讨论】:
-
你配置了什么样的跟踪监听器?
-
只是默认的TraceListener
-
糟糕,你这么说。那么“明显”慢了多少?喜欢测量,还是只是观察?
-
只是观察。我有 2000 个预加载行。没有跟踪语句,它不到一秒。使用 writelines,可能大约 10 秒,使用缩进,超过 1 分钟。
-
由于我没有对 Debug 类进行任何自定义,您可以只创建一个带有循环的小型控制台应用程序,然后自己查看性能下降。
标签: .net performance debugging trace