と の違いが気に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
では、どちらがより好ましいか、または Web サービス標準により準拠していると思いますか? なんらかのパフォーマンス上の利点がある場合、私にはわかりません。より大規模な環境に簡単にスケーリングできるのはどれですか?