ハイドイツ語プラットフォームのエージェントはどのようにしていますか?高レベルのプラットフォームエージェントになるには?-監督σσ[61806]ラオスのQを特定[61806] "Excellent_Quality_Ping_Taiwan" "_" "Set_Top_wait_Meet" "One Step"
前の記事「C ++パフォーマンス、c#容量?!魚とクマの足は両方を持つことができます。.NETNATIVEの最初の垣間は多くの友人からの支持と励ましを獲得し、また私がこのテクノロジーのプロモーターになることを固く決心させました。情報の翻訳を開始しました。
このシリーズは、Xiao Jiuの学校のオリジナル翻訳であり、Microsoftの公式開発ガイドから翻訳されたもので、6つのトピックに分かれています。この記事は4番目のトピックです:.NETネイティブパフォーマンステスト。
ガイドへのリンク:「C ++ Performance C#Capacity?!-。Net Native Series:Development Wizard」
[Xiao Jiuの学校、普通の言語で並外れたテクノロジーを説明することに専念しています。転載する場合は、出典を明記してください。cnblogs.com/xfuture]
元:.NETネイティブ
.NETネイティブパフォーマンステストによる起動の改善の測定
.NET Framework 4.5の
ヒント
このテーマは、プレリリースの.NETネイティブ開発者プレビューに依存しています。ダウンロードアドレス:Microsoft Connect Webサイト。わかりやすいリマインダーには登録が必要です
。.Netネイティブは、プログラムの起動時間を大幅に改善します。このトピックでは、起動パフォーマンスの改善をテストする方法について説明します。
.netフレームワークとWindowsは、パフォーマンステストのためにWindowsイベントログ(ETW)のイベントトレースメカニズムを使用します。これにより、プログラムは、イベントがトリガーされたときに記録するようにツールに通知できます。PerfViewを使用して、ETWイベントログを表示および分析できます。
以下のトピックは、3つのステップで説明されます
。1. EventSourceクラスを使用して、イベントをトリガーします。
2. PerfViewを使用してイベントを収集します。
3.イベント分析にPerfViewを使用します。
EventSourceクラスを使用してイベントをトリガーする
EventSourceは、イベント処理メソッドをカスタマイズできる基本クラスを提供します。サブクラスを作成して継承し、そのイベントメソッドをオーバーライドします。各イベントソースはシングルトンモードです。
次のクラスは、2つの部分をテストするために使用されます:1.アプリクラスコンストラクターが呼び出されたのはいつ
ですか?2. MainPageが呼び出されたのはいつですか?
システムの使用;
System.Diagnostics.Tracingの使用;
[EventSource(Name = "MyCompany-MyApp")]
public Sealed Class AppEventSource:EventSource
{
public static AppEventSource Log = new AppEventSource();
// WriteEventとEventAttributeに渡される数値は
、各ロギングメソッドでインクリメントする必要があります。
[Event(1)]
public void AppInitialized(){WriteEvent(1 、 "");}
[イベント(2)]
public void MainPageInitialized(){WriteEvent(2、 "");}
}
注意点がいくつかあります。1.シングルトンインスタンスがAppEventSource.Logに作成され、すべてのログを記録するために使用されます。2.各イベントメソッドには、このクラスで呼び出されたメソッドにWriteEventインデックスを関連付けるのに役立つEventプロパティがあります。
上記のコードの2つのイベントは単なる例です。上記の2つのイベントがトリガーされると、ほとんどのプログラムが実行を開始します。操作中にユーザーと対話することによってトリガーされる他のイベントを理解し、それらを記録する必要があります。これらのイベントは単一ケースのログに記録されるため、各操作の開始と終了を記録するのに非常に役立ちます。検査プログラムが開始するとき、一般的に言えば、起動イベントはオペレーティングシステムによって発行される「プロセス/開始」イベントです。
たとえば、RSSリーダーを作成する場合、いくつかのイベントを記録する必要があり
ます。1.ホームページが初めて表示されます。
2.古いRSS記事は、ローカルストレージからメモリに逆シリアル化されます。
3.アプリが新しいRSS記事の同期を開始したとき。
4.アプリが新しいRSS記事の同期を完了したとき。
挿入:非常に単純です。記録する対応する位置でAppEventSource.Logのメソッドを呼び出すだけです。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
システムを使用;
Windows.ApplicationModelを使用します。
Windows.UI.Xamlを使用します。
パブリックシールされた部分クラスApp
{
public App()
{
this.InitializeComponent();
this.Suspending + = OnSuspending;
AppEventSource.Log.AppInitialized();
}
}
パブリックシールされた部分クラスMainPage:Page
{
public MainPage()
{
this.InitializeComponent();
AppEventSource.Log.MainPageInitialized();
}
<span style = "color:rgb(0、51、102);">}
</ span>
アプリの起動後、これらのイベントを収集できます。
PerfViewを使用したイベントの収集
PerfViewはETWイベントを使用して、さまざまなパフォーマンステスト情報を収集および調査します。構成インターフェースを使用して、さまざまなタイプのイベントを記録するように構成できます。PerfViewは無料で、Microsoftダウンロードセンターからビデオをダウンロードしてダウンロードできます。
PerViewではARMイベントを収集できないことに注意してください。ARMイベントにはWindows Performance Recorder(WPR)を使用する必要があります。WPFの場合は、Vance Morrisonのブログをクリックしてください。
コマンドラインからPerViewを開くこともできます:CMD-> Enter:perfview -KernelEvents:Process -OnlyProviders:* MyCompany-MyApp collect outputFile
-KernelEvents:Processは、録音プログラムの開始時間と終了時間を示します。-OnlyProviders:* MyCompany-MyApp他のPerfViewモニタリングをオフにして、独自のPerfViewをオンにします。collect outputFileは、ログの収集とoutputFile.etl.zipへのデータの保存を開始することを意味し
ます。PerfViewを開いてアプリを開きます。注意点:
1.リリース版を使用してください。デバッグバージョンには、テストに影響を与えるエラーチェックとデバッグコードが含まれています。
2.追加のデバッガー(アタッチ)がパフォーマンステストに影響します。
3. Windowsはキャッシュ戦略を使用して、アプリケーションの起動を高速化します。アプリが現在メモリにキャッシュされていて、ディスクから起動する必要がない場合は、はるかに高速になります。したがって、テストする前に、アプリケーションを数回閉じてください。またはログアウトします。
4. Perfviewはアプリの実行中に情報を収集し、停止したら収集停止ボタンをクリックします。プログラムが閉じているときにステータスを収集する場合は、アプリを閉じて収集を停止します。
イベント分析に
PerfViewを使用するPerfViewを使用して、生成された.etlまたは.etl.zipサフィックスファイルを開き、収集されたイベントを監視します。ETWは、他のプロセスを含む多くのアプリケーションのログを収集しました。したがって、アプリの分析に集中する場合は、次のことも行う必要があり
ます。1.プロセスフィルターフィールドにアプリの名前を入力します。
2. [イベントタイプフィルター]列で、[処理/開始] | [MyCompany-MyApp]を選択します。開始および停止するイベントを除外できます。
左側のウィンドウですべてのイベントを選択し(Ctrl + A)、Enterキーを押します。各イベントの期間を確認できます。これらの時間は開始を基準に計算されます。
Ctrlキーを押しながら2つの期間をクリックすると、2つの期間の違いが下部に表示されます。CSVにエクスポートするか、Excelにエクスポートしてレポートをエクスポートして保存するかを選択できます。
.netアプリと.netネイティブアプリのパフォーマンステストを比較すると、.netネイティブのパフォーマンスが向上します。
事前テストとアプリの比較を行ったところ、公式ウェブサイトに掲載されているようにパフォーマンスは60%向上していませんが、43.5%であり、テスト環境に影響がある可能性があります。要するに、パフォーマンスの改善は依然として非常に重要です!