XSLT использует concat или несколько элементов value-of для объединения переменных? - PullRequest
0 голосов
/ 15 октября 2019

Предположим, у меня есть около 20 переменных, которые я хочу объединить в строку CSV. Должен ли я предпочесть concat() или просто поместить все переменные ниже друг друга в <xsl> элементах?

:

<xsl:value-of select="concat($var1, ';', ..., $var10)"/>

или:

<xsl:value-of select="$var1"/>
<xsl:text>;</xsl:text>
...
<xsl:value-of select="$var10"/>

ОсобенноЧто касается производительности, у меня есть сто миллионов строк для обработки.

Подход contact похож на java StringBuilder, а элементный подход похож на string += val переназначение? Если, конечно, concat будет лучше. Но так ли это?

Ответы [ 2 ]

1 голос
/ 16 октября 2019

Маловероятно, что будет ощутимая разница в производительности, но единственный способ выяснить это - измерить ее.

В Saxon вызов concat() всегда строит строку в памяти (до следующегоSaxon release ...) в то время как серия вызовов xsl:text / xsl:value-of будет (по возможности) записывать его постепенно в сериализатор, так что это может иметь значение для использования памяти, если строка очень большая.

0 голосов
/ 21 октября 2019

По крайней мере, я выяснил, что contact() работает на 25% лучше, чем несколько xsl:text/xsl:value-of вызовов. Но я не знаю, можно ли это сказать вообще, но в моем случае с сотнями миллионов строк это все.

...