在C#和ASP.NET中跟踪的性能影响是什么?

Joh*_*ski 12 c# asp.net performance trace httpcontext

我在最近看到的一些生产登录代码中发现了这个...

HttpContext.Current.Trace.Write(query + ": " + username + ", " + password));
Run Code Online (Sandbox Code Playgroud)

...其中query是一个简短的SQL查询来获取匹配的用户.这会对性能产生什么影响吗?我认为它非常小.

此外,使用HTTP上下文,这种确切类型的跟踪的目的是什么?这些数据可以追溯到哪里?提前致谢!

Jar*_*Par 16

是的,只要在构建期间定义了TRACE条件编译常量,它就会对性能产生影响.做任何事都有一些影响:)

至于这是否对应用程序产生重大影响.Trace的设计运行并且在许多生产应用程序中运行的可能性极小.只有滥用此功能才能导致明显的性能差异.

但一如既往,不要相信我,相信探查者.


Joe*_*orn 5

跟踪消息可以发送到很多不同的地方。您可以添加(或删除)控制台、VisualStudio 调试窗口、文件、数据库表或事件日志等的 TraceListener。您甚至可以构建自己的。

另外,您可以将 Trace 配置为在针对 Release 进行编译时不执行任何操作。

因此,使用 Trace 对性能的影响可能会有很大差异,从有效为零到完全使应用程序陷入困境,具体取决于各种活动侦听器的性能。不过,大多数听众的影响力与你所期望的差不多。写入文件、数据库或控制台需要大量工作,而相对于那些 I/O 密集型活动,Trace 不会增加那么多开销。


撇开性能影响不谈,我对跟踪密码值的想法感到非常恐惧。这是你绝对不能做的事情。


Wil*_*son 5

我还没有评论的声誉点,但我想快速陈述Jonathan的答案.我看到的数字似乎表明,使用stringbuilder只是少数字符串连接是没有意义的.创建stringbuilder对象的开销超过了串联速度的好处.