INFORMACE: Postupů zvýšit výkon transformace XSL

Souhrn

Tento článek uvádí některé postupy zlepšit výkon transformace Extensible Stylesheet Language (XSL). XSL je jazyk, funkční. XSL nepodporuje funkce společný jazyk. Například XSL nepodporuje vrácené hodnoty nebo globals. XSL není objektově orientovaný jazyk a právě modulární náklady cyklů procesoru. Je k dispozici pro XSL bez ladění, tedy ladění bude obtížné.

Další informace

Výkon transformace XSL závisí na scénáře, které můžete použít. Techniky, které jsou uvedeny v tomto článku jsou obecné pokyny. Ujistěte se, že je měření výsledky každý optimalizace. Pouze testování mohou prokázat zda konkrétní technika zvyšuje výkon či nikoli. Nástroj příkazového řádku msxsl.exe můžete použít pro testování a provádění transformacemi XSL příkazového řádku pomocí procesoru Microsoft XSL. Nástroj msxsl.exe vyvolá Microsoft XML Parser 4.0 (msxml4.dll) k provedení transformace. Tento nástroj můžete stáhnout z následujícího webu MSDN:

Techniky pro zlepšení výkonu

  • Identifikovat nejběžnější cesty kódu k vykreslení stránky a optimalizujte tyto cesty. Optimalizujte vysoce znovu použít oddíly XSL.
  • Namísto použití dílčí prvky, použijte atributy, pokud je to možné. Pomocí atributů namísto prvky zvyšuje výkon. Při provádění XPath shody, atributy jsou rychlejší, protože jsou volně zadali. To usnadňuje ověření schématu.
  • Použití více explicitní cesty namísto "/ /" je to možné. Pokud XML data je velký, "/ /" rekurzivní decedent hledání je velmi náročné. Konkrétní výraz XPath implementuje rychleji.
  • Při porovnávat hodnoty atributů pomocí čítače výčtu atributy. Použití více názvů atributů jako bity a nastavte jejich hodnoty true nebo false. Například:
    <element_name attr1="1" attr2="1" attr3="0">
  • Nepoužívejte skript. Pomocí skriptu pro snížení úrovně výkonu.
  • Přímo porovnat podle názvu zvýšit výkon. Například namísto použití následující kód:
    ./info[type='title']
    použijte následující kód:
    ./title
    Při porovnávání hodnot namísto názvu:
    Select="*[name()='sample']"
    použijte následující kód:
    Select="sample"
    Protože obor názvů ve výrazu XPath zpracování jsou přesně ekvivalentní.
  • Všechny verze analyzátoru MSXML verze 3.0 a novější, jsou rychlejší s explicitní indexu filtru. Zlepšení výkonu závisí na umístění prvku v podřízeném seznamu nadřazeného objektu. Namísto použití následující:
    /child_element
    pomocí následujících kroků:
    /child_element[1]
  • Místo hodnocení při každém dotazu pomocí parametrů.
  • Transformace XSL umožňuje více možností, však z nich nesmí provádět přiměřeně. Například namísto použití následující transformace:
    <xsl:output method="html"/>
    použijte následující transformace:
    <xsl:output method="html" indent="no" />
    Zlepší to výkon, protože odsazení poskytuje velké množství nežádoucí mezery ve výstupu. Výchozí hodnota pro atribut odsazení je Ano.
  • Vložená šablona se pro každý atribut mode , když jste si jisti, že použití šablony odpovídá přesně jednu šablonu nebo. Například:
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']" /><xsl:template match="//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple">
    Pro každý uzel, který odpovídá následující:
    "//xa:Axes/xa:Axis[@name='Axis1']"
    Následující výraz:
    "//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple"
    je vyhodnocena na všechny šablony se stejným režimem. Procesor spuštění výchozí šablony. Zkopíruje všechny uzly textu a volá následující:
    <xsl:apply-templates>
    pro všechny prvky. Proto všechny děti o původní nodeset odpovídající výraz vyhodnocen. Odpovídající výraz není jednoduchý úkol. Chcete-li zvýšit výkon, přepište kód takto:
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple" mode="Axis1"/><xsl:template match="*" mode="Axis1">
  • Použijte méně šablony. Tuto možnost lze použít při spuštění stejné šablony více než jednou. Je zlepšení výkonu s těsné pro každý smyčky k vyhledání šablony, pokud počet šablon je menší.
  • Snížit spotřebu xsl: Zvolte / otherwise / xsl: jinak. Výkon se provádí při spadají většinou výběry prostřednictvím klauzule jinak . Proto odpovídat Přia pokuste se vyhnout použití jinak , když víte, že existuje konkrétní hodnotu.
  • XSL:Variables jsou dynamické hodnoty. Tyto proměnné nejsou v mezipaměti a spustit pokaždé, když se odkazuje v souboru XSL. Explicitní přetypování z xsl:variable zlepšuje výkon. Můžete provést zadejte přetypování pomocí funkce string() a boolean() . Například:
    <xsl:variable name="_attr" select="string( /node/child[ @attr ] )">
  • MSXML porovnání System.Xml
    • Se liší od XmlReader a XmlWriteranalyzátoru MSXML.
    • MSXML načte XML data do modelu objektu dokumentu (DOM). Z tohoto stromu modelu DOM dat lze snadno pomocí XPath navigaci, transformována pomocí XSL, nebo upravit a uložit zpět. To umožňuje snazší vývoj a výkonnější funkce na úkor využití paměti a rychlosti.
    • XmlReader a XmlWriter jsou sekvenční čtení a zápis. Vývojář udržuje stav ručně při čtení a zápisu dat XML. To umožňuje využití minimální paměti a tedy zvyšuje výkon.
    • Analyzátoru MSXML podporuje také SAX (Simple API for XML). Je sekvenční SAX. Rozhraní .NET framework podporuje také modelu DOM pomocí třídy XmlDocument .
    • Nejvhodnější volba je závislá na využívání rozhraní .NET framework a na úkol provést pomocí XML.
  • Tento postup se vztahuje k výkonu s databází. MSXML a System.Xml výkon lze zvýšit v předem spojující vyhledávací pole, jak je znázorněno v následujícím kódu:
    <?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>
    Můžete se vyhnout skenování prohlášením @key ID typu.
    desc = doc.getNodeFromID("AMC_Labels_3082")

Odkazy

Další informace naleznete na následujících webech Microsoft Developer Network (MSDN):Další informace o výkonu XSLT klepnutím na následující čísla článku zobrazení v článcích znalostní báze Microsoft Knowledge Base:
325689 INFO: výkon transformace XSLT v rozhraní.NET Framework
331026 zobrazit Me jak: ladění výkonu mé stylů Xslt v rozhraní .NET pomocí System.Xml
Chyba č: 2865 (Údržba obsahu)
Vlastnosti

ID článku: 815124 - Poslední kontrola: 16. 1. 2017 - Revize: 2

Váš názor