2016-06-01 5 views
2

私は.NET Webサイトで作業しており、読み込み時間を短縮しようとしています。私の問題は、ホーム・ページ(オブジェクト・データをロードしない)であっても、ホームページを読み込むにはかなりの時間がかかります。私は、問題を引き起こしていただきました見つけるためにどこにでもロガーを入れている、これは私がこれまで持っているものです。ウェブサイトのパフォーマンスを向上させる - ASP.NET

2016-06-01 12:10:04,217 [5] INFO - BaseController/SetPrincipal(): Started - 01/06/2016 12:10:04 PM 
2016-06-01 12:10:04,235 [5] INFO - SetPrincipal->PrincipalContextManager(): Started - 01/06/2016 12:10:04 PM 
2016-06-01 12:10:04,839 [5] INFO - PrincipalContextManager() finished: 00:00:00.6040604 

2016-06-01 12:10:04,990 [5] INFO - SetPrincipal->DILAuthorizationContext(): Started - 01/06/2016 12:10:04 PM 
2016-06-01 12:10:06,657 [5] INFO - DILAuthorizationContext() finished: 00:00:01.6661666 

2016-06-01 12:10:06,659 [5] INFO - GetRoles->PrincipalContextManager(): Started - 01/06/2016 12:10:06 PM 
2016-06-01 12:10:06,822 [5] INFO - PrincipalContextManager() finished: 00:00:00.1630163 

2016-06-01 12:10:06,954 [5] INFO - BaseController/SetPrincipal() finished: 00:00:02.8402840 

2016-06-01 12:10:07,026 [5] INFO - HomePageController/Index: Started - 01/06/2016 12:10:07 PM 
2016-06-01 12:10:07,091 [5] INFO - HomePageController/Index finished: 00:00:00.0650065 

2016-06-01 12:10:08,312 [5] INFO - Loading Layout Start: 01/06/2016 12:10:08 PM 
2016-06-01 12:10:08,314 [5] INFO - Loading Layout Finish: 01/06/2016 12:10:08 PM 
2016-06-01 12:10:08,711 [5] INFO - Requesting JS bundles: 01/06/2016 12:10:08 PM 
2016-06-01 12:10:09,482 [5] INFO - Requesting JS bundles: 01/06/2016 12:10:09 PM 

2016-06-01 12:10:09,658 [5] INFO - Layout CanView Users Started: 01/06/2016 12:10:09 PM 
2016-06-01 12:10:09,770 [5] INFO - Layout CanView Users Finished: 01/06/2016 12:10:09 PM 

私はそれを高速化するためのバンドルのための分のファイルを使用してSetPrincipal方法を微調整する必要があることを承知していますアップ。しかし、私の質問は、レイアウトを表示するためにインデックスをView()を呼び出した後、レイアウトをロードするのに約1.5秒かかります。この遅延を引き起こす原因を見つけるにはどうすればよいですか?どんな助けもありがたいです!感謝:)

アップデート:私はこれまでのところ、推奨唯一の解決策のthatsと私は答えとして、USRのソリューションをマークすると思いますが、あなたたちは、コードをプロフィール

答えて

3

何かをお勧めすることができます場合、私は本当に感謝します。ホットコードは明らかです。

または、負荷がかかっている状態でデバッガを10回停止して、最も停止している箇所を確認します。それはほとんどの時間を消費するコードです。

このテクニックは、貧しい人のプロファイラと呼ばれています。デバッガでアプリの状態を調べることができるので、実際のプロファイラよりもよく使用されます。 Pro tip:並列負荷を実行し、並列スタックウィンドウを使用します。そうすることで、N個のスレッドのサンプルがツリーとして表示されます!

+2

アプローチ2は、レイモンド・チェンの記事「メモリリークを特定する貧しい人の方法」(https://blogs.msdn.microsoft.com/oldnewthing/20050815-11/?p=34583/)を思い出させます。あなたが何かを漏らしていると、そこにはたくさんの人がいるだろうが、あなたが漏れていないものは数が少ないだろうから、無作為に何かをつかむと、漏れた物体になるだろう! –

+0

それはSetPrincipal関数で停止し続けます。停止したい部分に正確に停止させるのは難しいです。S –

+0

テスト目的でSetPrincipalの呼び出しを削除することを検討してください。このテクニックは、**貧しい人のプロファイラ**と呼ばれています。デバッガでアプリの状態を調べることができるので、実際のプロファイラよりもよく使用されます。 Pro tip:並列負荷を実行し、並列スタックウィンドウを使用します。そうすることで、N個のスレッドのサンプルがツリーとして表示されます。 – usr

関連する問題