我想知道HttpContext.Current.User.Identity.Name.ToString.ToLower
和之间有什么区别Thread.CurrentPrincipal.Identity.Name.ToString.ToLower
。这两种方法都在我的 asp.net 3.5 Web 服务中获取用户名。我决定使用一个小程序来弄清楚性能是否有任何差异。在每次运行中从完全停止运行到开始调试。
Dim st As DateTime = DateAndTime.Now
Try
'user = HttpContext.Current.User.Identity.Name.ToString.ToLower
user = Thread.CurrentPrincipal.Identity.Name.ToString.ToLower
Dim dif As TimeSpan = Now.Subtract(st)
Dim break As String = "nothing"
Catch ex As Exception
user = "Undefined"
End Try
我在 break 上设置了一个断点来读取dif
. 两种方法的结果相同。
dif.Milliseconds 0 Integer
dif.Ticks 0 Long
使用更长的持续时间,循环 5,000 次会产生这些数字。
线程方法
run 1
dif.Milliseconds 125 Integer
dif.Ticks 1250000 Long
run 2
dif.Milliseconds 0 Integer
dif.Ticks 0 Long
run 3
dif.Milliseconds 0 Integer
dif.Ticks 0 Long
HttpContext 方法
run 1
dif.Milliseconds 15 Integer
dif.Ticks 156250 Long
run 2
dif.Milliseconds 156 Integer
dif.Ticks 1562500 Long
run 3
dif.Milliseconds 0 Integer
dif.Ticks 0 Long
所以我猜什么更受欢迎,或者更符合网络服务标准?如果有某种类型的性能优势,我真的不能说。哪一个更容易扩展到更大的环境?