Warisan
Profil rekaman Windows Performance Recorder (WPR) disimpan dalam file XML yang memiliki ekstensi .wprp. WPR mendukung pewarisan objeknya dengan menggunakan atribut Base="" dalam skema XML profil WPR. Pewarisan memungkinkan Anda untuk menyimpan, menggunakan kembali, dan membangun definisi profil umum untuk merekam skenario khusus. Misalnya, Anda dapat menambahkan penyedia ke profil yang ada dan dengan demikian mengubah ukuran buffer tanpa mengubah definisi di profil aktual.
Penting Saat Anda menulis profil WPRP, Anda harus mewarisi data profil dari profil dasar bawaan WPR, atau menggunakan kembali nama sesi yang sama untuk menghindari mengaktifkan penyedia yang sama beberapa kali.
Profil Dasar
Anda bisa menggunakan tag XML untuk mengubah konten profil. Anda harus menggunakan atribut Operasi . Nilai yang mungkin untuk atribut Operasi adalah Atur dan Tambahkan. Dalam contoh berikut, DerivedProfile menambahkan kata kunci sistem ReadyThread ke kata kunci CpuConfig, CSwitch, dan SampledProfile yang ditentukan BaseProfile .
<SystemCollector
Id="BaseSystemCollector" ... />
<SystemProvider
Id="MainSystemProvider">
<Keywords>
<Keyword
Value="CpuConfig"/>
<Keyword
Value="CSwitch"/>
<Keyword
Value="SampledProfile"/>
</Keywords>
</SystemProvider>
<SystemProvider
Id="AnotherSystemProvider">
<Keywords>
<Keyword
Value="ReadyThread"/>
</Keywords>
</SystemProvider>
<Profile
Id="BaseProfile"...>
...
<Collectors>
<SystemCollectorId
Value="BaseSystemCollector">
<SystemProviderId
Value="MainSystemProvider"/>
</SystemCollectorId>
</Collectors>
</Profile>
<Profile
Id="DerivedProfile"
Base="BaseProfile"...>
...
<Collectors Operation="Add"> <!--Use "Add" operation to add new provider to an existing one. -->
<SystemCollectorId
Value="BaseSystemCollector">
<SystemProviderId
Value="AnotherSystemProvider"/> <!--Specify provider to add. -->
</SystemCollectorId>
</Collectors>
</Profile>
Catatan Jika Anda tidak menentukan atribut Operasi tetapi Anda menggunakan pewarisan, WPR menggunakan Set nilai default.
Contoh
Contoh berikut menentukan profil untuk mode pengelogan file. Versi memori mewarisi dari versi file dan hanya menimpa mode pengelogan.
<Profile
Id="SampleProfile.Verbose.File"
LoggingMode = "File"
DetailLevel = "Verbose"
Name = "SampleProfile"
Description = "A sample profile">
…
</Profile>
<Profile
Id="SampleProfile.Verbose.Memory"
Base="SampleProfile.Verbose.File”
LoggingMode = "Memory"
DetailLevel = "Verbose"
Name = "SampleProfile"
Description = "A sample profile"/>
Praktik Terbaik Pewarisan
Warisan yang dirancang dengan buruk dapat menciptakan konsekuensi yang tidak diinginkan. Sebaiknya Anda hanya mendapatkan kolektor dari kolektor, atau profil dari profil. Anda tidak boleh menggabungkan derivasi di beberapa jenis objek.
Tiga contoh berikut menjelaskan dua cara yang baik untuk menggunakan pewarisan; contoh ketiga menjelaskan penggunaan warisan yang buruk.
Contoh 1: Penggunaan Warisan yang Baik
Anda ingin menggunakan spesifikasi Pengumpul Peristiwa-A, dengan beberapa modifikasi. Untuk melakukannya:
Tentukan kolektor kedua (Collector-B) yang mewarisi spesifikasinya dari Collector-A.
Ubah Collector-B.
Atur profil untuk mereferensikan Collector-B.
Ini adalah praktik yang baik karena hanya objek kolektor yang mewarisi atribut dari objek pengumpul lain, yang kemudian langsung dirujuk oleh profil.
Contoh 2: Penggunaan Warisan yang Baik
Profil-A mereferensikan Collector-A.
Profile-B mewarisi atribut dari Profile-A.
Anda mengubah atribut tertentu di Profil-B.
Ini adalah praktik yang baik karena hanya objek profil yang berasal dari objek profil lain.
Contoh 3: Penggunaan Pewarisan yang Buruk
Profil-A mereferensikan Collector-A.
Kolektor-B mewarisi dari Kolektor-A.
Profil-B mewarisi dari Profil-A dan juga mereferensikan Collector-B.
Dalam hal ini, Profil-B mereferensikan Collector-B dua kali: satu kali melalui pewarisan oleh Profil-A, dan satu kali dengan referensi langsung ke Collector-B. Dalam hal ini, tidak jelas bagaimana definisi untuk Collector-B harus dievaluasi; yaitu, derivasi mana yang harus diutamakan. Contoh ini menggambarkan praktik yang buruk karena pengurutan tidak terdefinisi dan dapat menyebabkan hasil yang bertentangan berdasarkan urutan operasi. Jenis warisan ini harus dihindari.