Performance Difference between HttpContext user and Thread user
- by atrueresistance
I am wondering what the difference between HttpContext.Current.User.Identity.Name.ToString.ToLower and Thread.CurrentPrincipal.Identity.Name.ToString.ToLower. Both methods grab the username in my asp.net 3.5 web service. I decided to figure out if there was any difference in performance using a little program. Running from full Stop to Start Debugging in every run.
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
I set a breakpoint on break to read the value of dif. The results were the same for both methods.
dif.Milliseconds 0 Integer
dif.Ticks 0 Long
Using a longer duration, loop 5,000 times results in these figures.
Thread Method
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 Method
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
So I guess what is more prefered, or more compliant with webservice standards? If there is some type of a performance advantage, I can't really tell. Which one scales to larger environments easier?