我发现这在一些生产登录代码我一直在寻找最近......

HttpContext.Current.Trace.Write(query + ": " + username + ", " + password));

...其中查询是一个短的SQL查询抢匹配用户。这是否有任何种类的性能影响?我假定其非常小。

另外,这是什么具体类型跟踪的目的,使用HTTP上下文?哪里该数据得到追溯到?由于事先!

有帮助吗?

解决方案

是它将具有每当TRACE条件编译常数被构建期间限定的性能影响。做任何事情有一些类型的影响:)

作为对此是否具有对应用程序所显著影响。这是极不可能,它将作为跟踪被设计为运行在许多生产应用程序运行。只有功能的滥用应该导致noticable性能差异。

但一如既往,不信任我,信任的探查。

其他提示

我没有征求意见的声誉分,但是我想要做出乔纳森的回答快速声明。我所看到的数字似乎表明,它没有任何意义的使用StringBuilder只是一个字符串连接的屈指可数。胜过级联速度益处创建StringBuilder对象的开销。

在这段代码最性能损失是不是在跟踪,但在通过使用+操作者的字符串连接。这确实可以击败在性能方面的IO操作一些低效率的内存操作。我会改变它使用类似string.Concat或StringBuilder类(或的String.format为此事)。

跟踪消息可以去很多不同的地方。您可以添加(或删除)TraceListeners的控制台,VisualStudio的调试窗口,文件或事件日志,仅举几例。你甚至可以建立自己的。

此外,您还可以配置跟踪到编译版本时没有做任何事情。

因此,使用跟踪变化很大,一路从零对性能的影响完全陷入泥淖您的应用程序,这取决于听众活跃。大多数听众,虽然有关于你所期望的影响。大约需要这么多工作写入文件或数据库,或控制台,并跟踪不那么多的开销相对于那些I / O限制的活动增加。

如果跟踪正在写入一个文本文件,它的成本比写入控制台恕我直言,更

“追踪增加额外开销的要求和部署应用程序不应该被启用。Trace.Write()语句,但可以留在,因为他们正在追查未启用时忽略了。”

http://msdn.microsoft.com/en-us/library/ ms972204.aspx

我想跟踪源看起来在其开关的的TraceLevel转发消息发送到侦听器之前。因此,如果我们保持交换机的默认值的TraceLevel为“错误”,然后跟踪开销将大大减少,因为只有“错误”的痕迹会被送到听众。

只是一个猜测...我还没有测量任何东西。如果我这样做会更新。

2017年更新:似乎是一个过时,但在asp.net应用程序跟踪/日志信息到浏览器/远程访问.aspx页面中的一个非常方便的方式。

https://msdn.microsoft。 COM / EN-IN /库/ z48bew18(v = vs.71)的.aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top