INFO: Teknik untuk meningkatkan kinerja dari Extensible Stylesheet Language Transformations

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 815124 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

RINGKASAN

Artikel 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.

INFORMASI LEBIH LANJUT

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:
http://www.Microsoft.com/downloads/details.aspx?FamilyID = 2fb55371-c94e-4373-b0e9-db4816552e41 & DisplayLang = en

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:
    ./info[type='title']
    Gunakan kode berikut:
    ./title
    Ketika Anda membandingkan nilai-nilai, alih-alih menggunakan nama sebagai berikut:
    Select="*[name()='sample']"
    Gunakan kode berikut:
    Select="sample"
    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:
    /child_element
    menggunakan berikut:
    /child_element[1]
  • 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:
    <xsl:apply-templates>
    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")

REFERENSI

Untuk informasi lebih lanjut, kunjungi Website Microsoft berikut Situs Web Developer Network (MSDN):
XSLT pengembang panduan
http://msdn2.Microsoft.com/en-us/library/ms759204.aspx
Meningkatkan EXTENSIBLE STYLESHEET LANGUAGE
http://msdn2.Microsoft.com/en-us/library/aa468550.aspx
Untuk informasi tambahan tentang kinerja XSLT, klik nomor artikel di bawah ini untuk melihat artikel di Microsoft Basis Pengetahuan:
325689INFO: Kinerja XSLT Transformasi di.NET Framework
331026 Tunjukkan bagaimana: Kinerja menyetel Xslt Stylesheet saya.BERSIH menggunakan System.Xml

Properti

ID Artikel: 815124 - Kajian Terakhir: 04 Oktober 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Kata kunci: 
kbperformance kbxml kbinfo kbmt KB815124 KbMtid
Penerjemahan Mesin
PENTING: 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

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com