В поисках лучшей производительности в XSLT: xsl: element name = "div" против <div> - PullRequest
3 голосов
/ 07 марта 2011

Что имеет большую производительность в XSLT при написании элемента XHTML

<xsl:element name="div">
  <xsl:attribute name="class">someclass</xsl:attribute>
</xsl:element>

или просто записывает его

<div class="someclass"></div>

Имеет ли это какое-либо значение в скорости обработки / производительности и т. Д.?

Ответы [ 5 ]

3 голосов
/ 07 марта 2011

Я подозревал, что компиляторы XSLT, вероятно, конвертируют один в другой внутренне и, конечно, по крайней мере, некоторые из них do:

Буквальные результирующие элементы теперь внутренне компилируются в xsl: element и xsl: атрибут инструкции.Это приводит к изменениям в выводе трассировки: теперь каждый атрибут отслеживается как отдельная инструкция.

В целом, это пахнет видом микрооптимизации, который вряд ли даст улучшение, которое перевешивает преимуществавыбирая более читаемую версию.

1 голос
/ 17 января 2013

Читабельность важна только в цикле разработки. Сайты с высокой нагрузкой, которые используют динамическую презентацию с XSL, захотят сэкономить, казалось бы, малые времена.

Чтобы проверить, что быстрее в вашем компиляторе, создайте два XSL, которые повторяют одно и то же 10 000 раз, а затем измерьте скорость обработки на внешнем интерфейсе. Затем разделите разницу во времени на 10000, и вы получите истинную разницу в скорости.

В зависимости от размера XSL также окажет влияние. Полностью спроектированная страница в xsl: element будет намного больше, чем обычный HTML. Однако если вы используете XSL в этом методе, вам следует переосмыслить разбивку конкретных данных на XML / XSL-включения, а остальная часть шаблонов страниц выполняется где-то еще.

1 голос
/ 07 марта 2011

Рядом с любым XSL-преобразователем будут сопоставлены оба варианта в одном и том же внутреннем представлении. Только что проверил миллион звонков с saxonb-xslt 9: Абсолютно без разницы.

0 голосов
/ 07 марта 2011

Вы не получите никакого ощутимого прироста производительности от такого рефакторинга (можете ли вы почувствовать разницу в микросекундах)?

Однако я настоятельно рекомендую использовать наиболее читаемую версию :

<div class="someclass"/>

Даже в случае, когда элемент имеет атрибуты, значение которых вычисляется динамически, всегда пытается записать :

<someElement attr="{someExpression}"/>

вместо:

<someElement>
 <xsl:attribute name="attr">
  <xsl:value-of select="someExpression"/>
 </xsl:attribute>
</someElement>
0 голосов
/ 07 марта 2011

Лучшая производительность записи элемента зависит от процессора XSLT. Процессор может оптимизировать первый, чтобы иметь ту же производительность, что и второй.Внедрив XSLT-процессор, я бы посоветовал записать элемент вместо использования xsl: element, скорее всего, либо быстрее, либо быстрее, и вряд ли будет медленнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...