ИНФОРМАЦИЯ: Способы повышения производительности XSL-преобразований

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:815124
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Аннотация
В этой статье перечислены некоторые способы повышения производительность преобразования расширяемого языка стилей (XSL). XSL — функциональный язык. XSL не поддерживает функции общего языка. Для пример, XSL поддерживает возвращаемого значения или globals. Не является XSL объектно ориентированный язык и модульная, стоимость циклов процессора. Не существует никаких Отладка для XSL, таким образом, отладка становится трудно.
Дополнительная информация
Зависит от производительности преобразования XSL сценарии, которые можно использовать. Приемы, перечисленные в этой статье Общие рекомендации. Убедитесь, что измерять результаты каждой настройки. Только Тестирование может доказать ли определенный метод повышает производительность или не. Для тестирования и выполнения можно использовать программу командной строки msxsl.exe XSL-преобразования командной строки с использованием Microsoft XSL процессор. В Служебная программа msxsl.exe вызывает Microsoft XML Parser 4.0 (msxml4.dll) для выполнения преобразование. Эту программу можно загрузить из следующей MSDN веб-узел:

Способы повышения производительности

  • Определение наиболее распространенные пути кода для отображения страниц, а затем оптимизировать эти пути. Оптимизация высоко повторно разделов XSL.
  • Вместо использования вложенных элементов, использование атрибутов там, где невозможно. С помощью атрибутов вместо элементов улучшает производительность. Когда атрибуты выполнение совпадений XPath, выполняются быстрее, так как они слабо типизированных. Это упрощает проверку схемы.
  • Используйте более явного пути, а не "/ /" везде, где это возможно. Когда XML-данных имеет большой размер, "/ /" рекурсивный поиск decedent очень дорого. Реализует быстрее указанному выражению XPath.
  • Когда совпадают со значениями атрибутов с помощью перечислителя атрибуты. Использование нескольких имен атрибутов как биты и задать их значения ИСТИНА -или- ЛОЖЬ. Например:
    <element_name attr1="1" attr2="1" attr3="0">
  • Не следует использовать сценарий. С помощью сценария возврат к предыдущей версии производительность.
  • Сравните непосредственно по имени для повышения производительности. Для пример, а не с помощью следующего кода:
    ./info[type='title']
    Используйте следующий код:
    ./title
    При сравнении значений вместо использования имени следующим образом:
    Select="*[name()='sample']"
    Используйте следующий код:
    Select="sample"
    Из-за пространство имен в XPath это не совсем эквивалент.
  • Все версии MSXML, версия 3.0 или более поздней версии, выполняются быстрее с помощью явной индекс фильтра. Улучшения в производительности зависит от положение элемента в список дочерних объектов родительского элемента. Вместо использования следующий:
    /child_element
    Используйте следующее:
    /child_element[1]
  • Использование параметров вместо обработки каждого запроса время.
  • XSL-преобразования допускает несколько вариантов, тем не менее, все они могут работать должным образом. Например вместо использования следующих Преобразование:
    <xsl:output method="html"/>
    Используйте следующие преобразования:
    <xsl:output method="html" indent="no" />
    Это повышает производительность, так как отступ предоставляет большое количество ненужных пробелы в выходных данных. По умолчанию имеет значение для атрибута отступ ДА.
  • Встроенный шаблон с для каждого -или- атрибут mode Если вы уверены, что ваш Применение шаблона соответствует ровно один шаблон. Например:
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']" /><xsl:template match="//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple">
    Для каждого узла, который соответствует следующим:
    "//xa:Axes/xa:Axis[@name='Axis1']"
    следующее выражение:
    "//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple"
    вычисляется для всех шаблонов с одинаковым режимом. Запускает процессора для запуска шаблонов по умолчанию. Копирует все текстовые узлы и вызывает следующее:
    <xsl:apply-templates>
    для всех элементов. Таким образом для всех дочерних элементов исходной коллекции узлов вычислить выражение возможные совпадения. Выражение не простой задачей. Для повышения производительности, перепишите код следующим образом:
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple" mode="Axis1"/><xsl:template match="*" mode="Axis1">
  • Использование меньшего числа шаблонов. Этот параметр доступен при запуске того же шаблона более чем один раз. Есть некоторые улучшения в производительности по контуру для каждого цикл для поиска шаблона, если несколько шаблонов меньше.
  • Снизить расход ресурсов XSL: Выбор / xsl:when / xsl: в противном случае. Это относится производительности при попадает большинство выделенных областей через в противном случае предложение. Таким образом совпадают с Прии следует избегать использования в противном случае Если вы знаете, что существует определенное значение.
  • XSL:Variables — динамического значения. Эти переменные, не в кэш-памяти и запускать каждый раз, они упоминаются в XSL. Явный тип приведение xsl:variable улучшает производительность. Можно выполнить приведение с помощью ввода String() и Boolean() функции. Например:
    <xsl:variable name="_attr" select="string( /node/child[ @attr ] )">
  • MSXML Vs. System.XML
    • Синтаксический анализатор MSXML отличается от XmlReader и XmlWriter.
    • MSXML загружает данные XML в объектной модели документов (DOM). Из этого дерева модели DOM данных можно легко перемещаться по XPath, преобразование XSL или отредактированные и сохраненные на задней панели. Это позволяет значительно упростить Разработка и более широкие возможности за счет использования памяти и скорость передачи данных.
    • XmlReader и XmlWriter являются последовательного чтения и записи. Разработчик сохраняет состояние вручную при чтении и записи XML-данных. Это позволяет минимальный объем памяти Использование и, следовательно, повышает производительность.
    • Синтаксический анализатор MSXML также поддерживает SAX (простой API-Интерфейс для XML). SAX последовательно. .NET framework также поддерживает модель DOM с помощью Объект XmlDocument класс.
    • Лучший выбор зависит от использования.NET Framework и задачи, выполняемые с помощью XML.
  • Этот метод имеет отношение к производительности с базой данных. MSXML и System.Xml производительность может быть улучшена в pre-joining поиска поля, как показано в следующем коде:
    <?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>
    Чтобы избежать сканирования, объявив ключ @ типа идентификатора.
    desc = doc.getNodeFromID("AMC_Labels_3082")
Ссылки
Для получения дополнительных сведений посетите следующие корпорации Майкрософт Developer Network (MSDN) веб-узлов:
Руководство разработчика XSLT
http://msdn2.Microsoft.com/en-us/library/ms759204.aspx
Для получения дополнительных сведений о производительности XSLT, щелкните следующие номера статей в Microsoft База знаний:
325689ИНФОРМАЦИЯ: Производительность XSLT Преобразований.NET Framework
331026 Показать, как: Производительность Присоединяйтесь мою таблицу стилей Xslt.NET с помощью System.Xml

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 815124 — последний просмотр: 12/08/2015 02:05:45 — редакция: 4.0

Microsoft .NET Framework 1.0, Microsoft .NET Framework 1.1

  • kbnosurvey kbarchive kbperformance kbxml kbinfo kbmt KB815124 KbMtru
Отзывы и предложения