INFO: Teknik untuk meningkatkan kinerja dari Extensible Stylesheet Language TransformationsArtikel ini berisi beberapa teknik untuk meningkatkan
kinerja transformasi Extensible Stylesheet Language (XSL). XSL adalah
bahasa fungsional. XSL tidak mendukung fitur umum bahasa. Untuk
contoh, XSL tidak mendukung kembali nilai-nilai, atau global. XSL bukanlah
berorientasi objek bahasa, dan menjadi modular biaya siklus prosesor. Ada tidak ada
debug tersedia untuk XSL, oleh karena itu, debugging menjadi
sulit. Kinerja transformasi XSL tergantung pada
skenario yang Anda gunakan. Teknik yang didaftar di artikel ini
panduan umum. Pastikan bahwa Anda mengukur hasil dari setiap tuning. Hanya
pengujian dapat membuktikan apakah teknik tertentu meningkatkan kinerja atau
tidak. Anda dapat menggunakan utilitas baris perintah msxsl.exe untuk pengujian, dan untuk melakukan
transformasi XSL baris perintah dengan menggunakan Microsoft XSL prosesor. The
msxsl.exe utilitas memanggil Microsoft XML Parser 4.0 (msxml4.dll) untuk melakukan
transformasi. Anda dapat men-download utilitas ini dari MSDN berikut
situs: Teknik untuk meningkatkan kinerja- Mengidentifikasi jalan kode yang paling umum untuk membuat halaman Anda,
dan kemudian mengoptimalkan jalur ini. Mengoptimalkan bagian sangat digunakan kembali
XSL.
- Alih-alih menggunakan sub-elemen, gunakan atribut di mana pun
mungkin. Menggunakan atribut bukan unsur-unsur meningkatkan kinerja. Kapan
melakukan pertandingan XPath, atribut lebih cepat karena mereka longgar diketik.
Hal ini membuat validasi skema lebih mudah.
- Menggunakan jalan yang lebih eksplisit bukan "/ /" sedapat mungkin.
Ketika XML data besar, "/ /" rekursif mendiang search sangat mahal.
Spesifik XPath ekspresi menerapkan lebih cepat.
- Ketika Anda sesuai terhadap nilai-nilai atribut, menggunakan enumerator
atribut. Menggunakan beberapa atribut nama sebagai bit, dan menetapkan nilai-nilai mereka benar atau palsu. Misalnya:
<element_name attr1="1" attr2="1" attr3="0"> - Tidak menggunakan script. Menggunakan script mengerdilkan
kinerja.
- Bandingkan secara langsung oleh nama untuk meningkatkan kinerja. Untuk
contoh, alih-alih menggunakan kode berikut: Gunakan kode berikut: Ketika Anda membandingkan nilai-nilai, alih-alih menggunakan nama sebagai berikut:
Select="*[name()='sample']" Gunakan kode berikut:Karena dari namespace penanganan di XPath, ini adalah tidak benar-benar
setara. - Semua versi MSXML, versi 3.0 dan kemudian, lebih cepat
dengan filter eksplisit indeks. Peningkatan kinerja tergantung pada
posisi elemen dalam daftar anak orangtua. Alih-alih menggunakan
berikut: menggunakan berikut:
- Gunakan parameter bukannya mengevaluasi query setiap
waktu.
- Extensible Stylesheet Language Transformations memungkinkan beberapa pilihan, namun, semua
mereka mungkin tidak melakukan cukup. Sebagai contoh, alih-alih menggunakan berikut
transformasi:
<xsl:output method="html"/> menggunakan transformasi berikut: <xsl:output method="html" indent="no" /> Hal ini meningkatkan kinerja karena indentasi menyediakan banyak tidak diinginkan
spasi putih pada output. Secara default, nilai untuk atribut indentasi adalah Ya. - Inline template dengan untuk setiap atau modus atribut Ketika Anda sudah yakin bahwa Anda menerapkan template sesuai tepat satu template. Misalnya:
<xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']" />
<xsl:template match="//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple"> Untuk setiap node yang cocok dengan berikut: "//xa:Axes/xa:Axis[@name='Axis1']" ungkapan berikut: "//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple" dievaluasi pada semua template dengan modus sama. Prosesor dimulai
untuk menjalankan template default. Ini salinan semua teks node, dan panggilan berikut:untuk semua elemen. Oleh karena itu, untuk semua anak asli nodeset,
kemungkinan kecocokan ekspresi dievaluasi. Pencocokan ekspresi bukanlah
tugas sederhana. Untuk meningkatkan kinerja, ulang kode sebagai berikut: <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple" mode="Axis1"/>
<xsl:template match="*" mode="Axis1"> - Menggunakan template yang lebih sedikit. Hal ini berlaku ketika Anda menjalankan
template yang sama lebih dari satu kali. Ada beberapa perbaikan dalam kinerja dengan
ketat untuk setiap loop untuk mencari template ketika jumlah template
kurang.
- Mengurangi penggunaan XSL: memilih / xsl:when / xsl: Jika tidak. Kinerja dipengaruhi ketika sebagian besar pilihan jatuh
melalui Jika tidak klausa. Oleh karena itu, sesuai dengan Kapan, dan mencoba untuk menghindari menggunakan Jika tidak Ketika Anda tahu bahwa ada nilai tertentu.
- XSL:Variables adalah nilai-nilai yang dinamis. Variabel ini tidak
dalam cache, dan menjalankan setiap kali bahwa mereka disebutkan dalam XSL. Jenis eksplisit
pengecoran xsl:variable meningkatkan kinerja. Anda dapat melakukan jenis pengecoran dengan string() dan Boolean) fungsi. Misalnya:
<xsl:variable name="_attr" select="string( /node/child[ @attr ] )"> MSXML Vs.
System.xml- MSXML parser berbeda dari XmlReader dan XmlWriter.
- MSXML banyak XML data ke dalam Document Object Model
(DOM). Dari pohon DOM ini, data dapat dengan mudah menjadi navigasikan melalui XPath,
berubah melalui XSL, atau diedit dan disimpan kembali. Hal ini memungkinkan lebih mudah
pengembangan dan kemampuan yang lebih kuat dari penggunaan memori dan
kecepatan.
- XmlReader dan XmlWriter yang berurutan pembaca dan penulis. Pengembang mempertahankan negara
secara manual ketika membaca dan menulis XML data. Hal ini memungkinkan memori minimal
penggunaan dan, oleh karena itu, meningkatkan kinerja.
- MSXML parser juga mendukung SAX (sederhana API untuk
XML). SAX berurutan. The.NET framework juga mendukung DOM dengan menggunakan XmlDocument kelas.
- Pilihan terbaik tergantung pada pemanfaatan.NET
kerangka kerja dan pada tugas yang Anda lakukan dengan XML.
- Teknik ini terkait dengan kinerja dengan database.
MSXML dan System.Xml kinerja dapat ditingkatkan pada pre-joining pencarian
bidang seperti yang ditunjukkan dalam kode berikut:
<?xml version="1.0" encoding="UTF-8"?>
<AllLocalDescriptor xmlns:fo="http://www.w3.org/1999/XSL/Format">
<Descriptor key="AMC_Labels_" ID="AMC" Name="-2000" TypeName="Labels" LCID="">
AMC
</Descriptor>
<Descriptor key="AMC_Labels_3082" ID="AMC" Name="-2000" TypeName="Labels" LCID="3082">
AMC
</Descriptor> Anda dapat menghindari pemindaian dengan menyatakan @ kunci tipe id.desc = doc.getNodeFromID("AMC_Labels_3082")
Untuk informasi lebih lanjut, kunjungi Website Microsoft berikut
Situs Web Developer Network (MSDN): Untuk informasi tambahan tentang kinerja XSLT,
klik nomor artikel di bawah ini untuk melihat artikel di Microsoft
Basis Pengetahuan: 325689
(http://support.microsoft.com/kb/325689/EN-US/
)
INFO: Kinerja XSLT
Transformasi di.NET Framework 331026
(http://support.microsoft.com/kb/331026/EN-US/
)
Tunjukkan bagaimana: Kinerja menyetel Xslt Stylesheet saya.BERSIH menggunakan System.Xml ID Artikel: 815124 - Kajian Terakhir: 04 Oktober 2011 - Revisi: 2.0 Berlaku bagi:- Microsoft .NET Framework 1.0
- Microsoft .NET Framework 1.1
| kbperformance kbxml kbinfo kbmt KB815124 KbMtid |
Penerjemahan MesinPENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah. Klik disini untuk melihat versi Inggris dari artikel ini: 815124
(http://support.microsoft.com/kb/815124/en-us/
)
| |