Performance issue
Geoffroy Arnoud via xslt <[email protected]> Thu, 10 Feb 2022 13:59:58 +0100
| Newsgroups | gmane.comp.gnome.lib.xslt |
|---|---|
| Message-ID | <[email protected]> |
--===============3252938640707496124==
Content-Type: multipart/signed;
boundary="Apple-Mail=_3CB374FB-3B59-48C5-B00B-824AC719A30B";
protocol="application/pkcs7-signature";
micalg=sha-256
--Apple-Mail=_3CB374FB-3B59-48C5-B00B-824AC719A30B
Content-Type: multipart/alternative;
boundary="Apple-Mail=_93C37015-211A-4AFE-AF3B-D0E1D11F0152"
--Apple-Mail=_93C37015-211A-4AFE-AF3B-D0E1D11F0152
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
charset=utf-8
Hello
Sorry for the very vague subject=E2=80=A6
We are facing a performance issue on a processing using Python lxml.
The legacy, running on CentOS 7, with lxml 4.3.4 / libxml 2.9.1 / =
libxslt 1.1.28 works fine (5'' to 10=E2=80=99=E2=80=99 in biggest =
use-case)
We are deploying this process to CentOS 8 Stream, which bumped our libs =
to lxml 4.7.1 / libxml 2.9.7 / libxslt 1.1.32.
And then, our Python processing time increased by a x20 factor.
After digging further, we pinned the performance issue to be in libxslt, =
by comparing the time taken by xsltproc for the same xml and xslt files =
on CentOS 7 and CentOS 8 Stream.
The xslt used is at the end of this message.
I=E2=80=99m not an expert of XSL, but is there any chance that this =
would be linked to https://gitlab.gnome.org/GNOME/libxslt/-/issues/24 =
<https://gitlab.gnome.org/GNOME/libxslt/-/issues/24> and =
https://bugzilla.gnome.org/show_bug.cgi?id=3D777432 =
<https://bugzilla.gnome.org/show_bug.cgi?id=3D777432> (fixed after =
1.1.28)?
Best regards
Geoffroy
The XSL used:
<xsl:stylesheet version=3D"1.0" =
xmlns:xsl=3D"http://www.w3.org/1999/XSL/Transform">
<xsl:output method=3D"xml" encoding=3D"UTF-8"/>
<xsl:param name=3D"indent-increment" select=3D"' '"/>
<xsl:template name=3D"newline">
<xsl:text disable-output-escaping=3D"yes">
</xsl:text>
</xsl:template>
<xsl:template match=3D"comment() | processing-instruction()">
<xsl:param name=3D"indent" select=3D"''"/>
<xsl:call-template name=3D"newline"/>
<xsl:value-of select=3D"$indent"/>
<xsl:copy />
</xsl:template>
<xsl:template match=3D"text()">
<xsl:param name=3D"indent" select=3D"''"/>
<xsl:call-template name=3D"newline"/>
<xsl:value-of select=3D"$indent"/>
<xsl:value-of select=3D"normalize-space(.)"/>
</xsl:template>
<xsl:template match=3D"text()[normalize-space(.)=3D'']"/>
<xsl:template match=3D"*">
<xsl:param name=3D"indent" select=3D"''"/>
<xsl:call-template name=3D"newline"/>
<xsl:value-of select=3D"$indent"/>
<xsl:choose>
<xsl:when test=3D"count(child::*) > 0">
<xsl:copy>
<xsl:copy-of select=3D"@*"/>
<xsl:apply-templates select=3D"*|text()">
<xsl:with-param name=3D"indent" select=3D"concat ($indent, =
$indent-increment)"/>
</xsl:apply-templates>
<xsl:call-template name=3D"newline"/>
<xsl:value-of select=3D"$indent"/>
</xsl:copy>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select=3D"."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
--Apple-Mail=_93C37015-211A-4AFE-AF3B-D0E1D11F0152
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
charset=utf-8
<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" =
class=3D"">Hello<div class=3D""><br class=3D""></div><div class=3D"">Sorry=
for the very vague subject=E2=80=A6</div><div class=3D""><br =
class=3D""></div><div class=3D"">We are facing a performance issue on a =
processing using Python lxml.</div><div class=3D""><br =
class=3D""></div><div class=3D"">The legacy, running on CentOS 7, with =
lxml 4.3.4 / libxml 2.9.1 / libxslt 1.1.28 works fine (5'' to 10=E2=80=99=E2=
=80=99 in biggest use-case)</div><div class=3D""><br class=3D""></div><div=
class=3D"">We are deploying this process to CentOS 8 Stream, which =
bumped our libs to lxml 4.7.1 / libxml 2.9.7 / libxslt 1.1.32.</div><div =
class=3D""><br class=3D""></div><div class=3D"">And then, our Python =
processing time increased by a x20 factor.</div><div class=3D""><br =
class=3D""></div><div class=3D"">After digging further, we pinned the =
performance issue to be in libxslt, by comparing the time taken by =
xsltproc for the same xml and xslt files on CentOS 7 and CentOS 8 =
Stream.</div><div class=3D""><br class=3D""></div><div class=3D"">The =
xslt used is at the end of this message.</div><div class=3D""><br =
class=3D""></div><div class=3D"">I=E2=80=99m not an expert of XSL, but =
is there any chance that this would be linked to <a =
href=3D"https://gitlab.gnome.org/GNOME/libxslt/-/issues/24" =
class=3D"">https://gitlab.gnome.org/GNOME/libxslt/-/issues/24</a> and=
<a href=3D"https://bugzilla.gnome.org/show_bug.cgi?id=3D777432" =
class=3D"">https://bugzilla.gnome.org/show_bug.cgi?id=3D777432</a> (f=
ixed after 1.1.28)?</div><div class=3D""><br class=3D""></div><div =
class=3D"">Best regards</div><div class=3D""><br class=3D""></div><div =
class=3D"">Geoffroy</div><div class=3D""><br class=3D""></div><div =
class=3D"">The XSL used:</div><div class=3D""><br class=3D""></div><div =
class=3D""><div class=3D""><xsl:stylesheet version=3D"1.0" =
xmlns:xsl=3D"<a href=3D"http://www.w3.org/1999/XSL/Transform" =
class=3D"">http://www.w3.org/1999/XSL/Transform</a>"></div><div =
class=3D""> <xsl:output method=3D"xml" =
encoding=3D"UTF-8"/></div><div class=3D""> <xsl:param =
name=3D"indent-increment" select=3D"' '"/></div><div =
class=3D""><br class=3D""></div><div class=3D""> <xsl:template =
name=3D"newline"></div><div class=3D""> <xsl:text =
disable-output-escaping=3D"yes"></div><div =
class=3D""></xsl:text></div><div class=3D""> =
</xsl:template></div><div class=3D""><br class=3D""></div><div =
class=3D""> <xsl:template match=3D"comment() | =
processing-instruction()"></div><div class=3D""> =
<xsl:param name=3D"indent" select=3D"''"/></div><div =
class=3D""> <xsl:call-template =
name=3D"newline"/></div><div class=3D""> =
<xsl:value-of select=3D"$indent"/></div><div class=3D""> =
<xsl:copy /></div><div class=3D""> =
</xsl:template></div><div class=3D""><br class=3D""></div><div =
class=3D""> <xsl:template match=3D"text()"></div><div =
class=3D""> <xsl:param name=3D"indent" =
select=3D"''"/></div><div class=3D""> =
<xsl:call-template name=3D"newline"/></div><div class=3D""> =
<xsl:value-of select=3D"$indent"/></div><div =
class=3D""> <xsl:value-of =
select=3D"normalize-space(.)"/></div><div class=3D""> =
</xsl:template></div><div class=3D""><br class=3D""></div><div =
class=3D""> <xsl:template =
match=3D"text()[normalize-space(.)=3D'']"/></div><div class=3D""><br =
class=3D""></div><div class=3D""> <xsl:template =
match=3D"*"></div><div class=3D""> <xsl:param =
name=3D"indent" select=3D"''"/></div><div class=3D""> =
<xsl:call-template name=3D"newline"/></div><div class=3D""> =
<xsl:value-of select=3D"$indent"/></div><div =
class=3D""> <xsl:choose></div><div =
class=3D""> <xsl:when test=3D"count(child::*)=
> 0"></div><div class=3D""> =
<xsl:copy></div><div class=3D""> =
<xsl:copy-of select=3D"@*"/></div><div class=3D""> =
<xsl:apply-templates =
select=3D"*|text()"></div><div class=3D""> =
<xsl:with-param name=3D"indent" select=3D"concat =
($indent, $indent-increment)"/></div><div class=3D""> =
</xsl:apply-templates></div><div =
class=3D""> <xsl:call-template =
name=3D"newline"/></div><div class=3D""> =
<xsl:value-of select=3D"$indent"/></div><div class=3D""> =
</xsl:copy></div><div class=3D""> =
</xsl:when></div><div class=3D""> =
<xsl:otherwise></div><div class=3D""> =
<xsl:copy-of select=3D"."/></div><div =
class=3D""> </xsl:otherwise></div><div =
class=3D""> </xsl:choose></div><div =
class=3D""> </xsl:template></div><div =
class=3D""></xsl:stylesheet></div></div><div class=3D""><br =
class=3D""></div><div class=3D""><br class=3D""></div></body></html>=
--Apple-Mail=_93C37015-211A-4AFE-AF3B-D0E1D11F0152--
--Apple-Mail=_3CB374FB-3B59-48C5-B00B-824AC719A30B
Content-Disposition: attachment;
filename=smime.p7s
Content-Type: application/pkcs7-signature;
name=smime.p7s
Content-Transfer-Encoding: base64
MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCDNEw
ggXjMIIDy6ADAgECAhBK8Nish63t1eXlYQXMR38sMA0GCSqGSIb3DQEBDAUAMEYxCzAJBgNVBAYT
Ak5MMRkwFwYDVQQKExBHRUFOVCBWZXJlbmlnaW5nMRwwGgYDVQQDExNHRUFOVCBQZXJzb25hbCBD
QSA0MB4XDTIyMDIwMjAwMDAwMFoXDTI1MDIwMTIzNTk1OVowajEWMBQGA1UECRMNMjMgUnVlIERh
dmllbDEXMBUGA1UECAwOw45sZS1kZS1GcmFuY2UxCzAJBgNVBAYTAkZSMRAwDgYDVQQKEwdSZW5h
dGVyMRgwFgYDVQQDEw9HZW9mZnJveSBBUk5PVUQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQCqqW/cLFsd67+BJ6wvsv4ucim6Y+QbPwTzp9hGW/yaInlh6b7TXerbVLktFboNcbxxULXg
zVr0i/uvyz65HoTXLM3kpUAHwrLjQ8SMeKTuHRxHFmHwogEQV3UAhMhDHEKnRJ5lRX7eaKzi+e7Y
DIgyZ/O1Ii0dm0J7mz3zL+XI8AMyl2U+rSKC4FZEiSDXDF15z77JmgOT0gtmQCDvPXCUBEHMBlwp
WXr+iq5HO1I8hLYrsV1t1b4K4u6KozHd6rgutYOFsDH2TA7mfC9otYbRcWllKhCJpU6X8p1VcrsR
uDbB3TMEm4vU4najUtt+Lsmi3b8yPy0x6+Z1OqkQ48zNAgMBAAGjggGnMIIBozAfBgNVHSMEGDAW
gBRpAKHHIVj44MUbILAK3adRvxPZ5DAdBgNVHQ4EFgQUR1Yj5I4EvqD4e8aOrC505FQr5eIwDgYD
VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMC
MD8GA1UdIAQ4MDYwNAYLKwYBBAGyMQECAk8wJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdv
LmNvbS9DUFMwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL0dFQU5ULmNybC5zZWN0aWdvLmNvbS9H
RUFOVFBlcnNvbmFsQ0E0LmNybDB4BggrBgEFBQcBAQRsMGowPQYIKwYBBQUHMAKGMWh0dHA6Ly9H
RUFOVC5jcnQuc2VjdGlnby5jb20vR0VBTlRQZXJzb25hbENBNC5jcnQwKQYIKwYBBQUHMAGGHWh0
dHA6Ly9HRUFOVC5vY3NwLnNlY3RpZ28uY29tMCUGA1UdEQQeMByBGmdlb2Zmcm95LmFybm91ZEBy
ZW5hdGVyLmZyMA0GCSqGSIb3DQEBDAUAA4ICAQBOUvc/SxW3JoWCapboIVDTN0Pu+In8hhG3BNpJ
zNiMT06k1ODywt9+gM3ttqUyhoFiliYKT7A0qdH9cT9CLBNlXhORyyI6a2kRiy/uge5s7TA2m7tn
+Kr91isdDXe09WJvp8l6Nke+Dq4dUdH+7lkk9mE0/ZdcSl2FNb2SIkkS7pfaUTqhY6dIYckM3t/i
BIgVXC4fQ3eDJvdBToKLzT9hMJ7G2FrWa8GAGLT3KOafzDpGTLHnMJpXWLRT7psBlnvWs85cpA/+
ip8InrOQ9wzq0IxcZZzc54fEd73O9tT73cLeSH/G5TK8KbsHHto748dwARnANL4jgatgYXljQzin
HvdCwEnI57AaLfvltjmY8jSPZS4PKhkDNjRkgy4IklMw1Ndn8YSgUYizmt6DT/hu1KP9nyRJpt2i
miEHN2ghMuD6TZRyPIi91YusUyOM0ah/648eCf++faqQiYNre9gsFtxXsjitnHXqZ/ioU6L9OERk
AWtGlUqCeWMLqFuoKWC4B7eWu+Oet58upHQpBgXs5g3s4sKLg8ur+l2LSPhM5zCZkTSV7eane2+5
HLda4CQxC+EoDVCRroYY/UBxzB7Mt4dSsmlIQZrTQJmxgxCza4Crjp89qURoNTJcJkYP8PRyI1Xm
47+Kbv203ITFglmvndoBGqrNg1A+7vo/P4Hi/jCCBuYwggTOoAMCAQICEDECcNQ1vpskmvhW0OHi
hUkwDQYJKoZIhvcNAQEMBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQw
EgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYD
VQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTIwMDIxODAwMDAw
MFoXDTMzMDUwMTIzNTk1OVowRjELMAkGA1UEBhMCTkwxGTAXBgNVBAoTEEdFQU5UIFZlcmVuaWdp
bmcxHDAaBgNVBAMTE0dFQU5UIFBlcnNvbmFsIENBIDQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQCzSuIiXidb6QRbFAQ1MiAUrrTSMUDGzVDAHqFEyq+eSmF/LZDeYpszai2kQsqWATz/
cBA9gGjunvJ45G48ycC4D6gwZFvbBt5JotxlunBeB8K+crGar3v+RCQ4VfvToX07v+HTJ6EeEONR
3IzJPTMyzgAwENGsAWf9va9HePQFJiChCzXqhKpp0zen53S+8f9itEy06GS8aku7Mvyb4tMBBa9A
n3Y3ALIqIeymg/iYs8m9WkSkMyekNtFRB1+1KlnNUpM05G8+sY9EucnQQRUIdHzYsvqjP3XlaSuB
4Jj0ia66UGfi5Wx31mm5sKAz8Re9UGVWIqq6wKFKxkSfuO4iwYiIPJoiGEux3dqabwFLduAroDF1
IxE40PqGIdPXzYuZ/wL6BEfFAb0xy8bfm5S9G7y/ts9mIlFpPtkLZ/nQ/iVOWdsu9ale/nK/uGF4
7xsxeW2LIvB4sH5U2+D4ad8vpNbcCrXIXXKtkBnNHgxumNNZ0R1Isq/Pz7TALCxxDzWdsM7AO32/
Jn7R4ldtGRZmKpJyfACDn8HU1QPhOtiWsjifrMWnanJhQ6K7M/5qz8BmfPrca+MUrr1Y4NHZb9Mr
gPtWKQQyGDXy+G5F/iHGdZk7LS+F8NH+Ddolt2wZpz52JqGMTDPIH5Qok4LLO95wbxtn+79Tw+wQ
xmDTuIg+LwIDAQABo4IBizCCAYcwHwYDVR0jBBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYD
VR0OBBYEFGkAocchWPjgxRsgsArdp1G/E9nkMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAG
AQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDA4BgNVHSAEMTAvMC0GBFUdIAAw
JTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwUAYDVR0fBEkwRzBFoEOgQYY/
aHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3Jp
dHkuY3JsMHYGCCsGAQUFBwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3Qu
Y29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51
c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUAA4ICAQAKBU57DY8fEzkA/W/sYsbD7e0XquMBzHjc
P0eXXXRD4EAEAGCWSs+QRL9XIxmx+52zx9wMa8YTejlR+NKejiyKPTF0q63zMxrO/z/hUwo8IDcR
RLS0NSgvTW6AN2rCXJe5iLN5fIfYgIBB9cy1L6trPuZ/vjUJm87nQ7ExQzGqWN5F9U8MlAk0c5iL
anG7GCMoNjHiF1n0baj6guUeG7n5qcwOQTyDS19+NEqfwjUPUGasN1ZH8h1sE6PrzvRpti+rKzWp
iU+i2/k3l2b5fFDy+Wu9jv6R9BoBh47es/UMzwEZ2kSrIVVr4jSukk+FpmR5ZbtwiYNAV6sdb1sr
MGsILzXlrdasSE2nGHvZklk2zUdgn7b01MHq67g0mNozGmT6Dam41Kbhv25WMFs871XqwVIb4gGo
T1yRf/VePMm1jwauqijhKJFvrNweGnebGPeipaLxIo2iEA4qdRztEg/qyzWGogXK/TFdmivg322f
MPQWjQkMhRGMM8SCjlZN22L8x0ZOYoVA2rHJm5P25IjZe+HPyn7ikJiSJmqlqFmUeowXF3D1dFlC
Cs/5yC06RYRqI2REFu+28t2nswIvY6xCFAR0RtS8Mz2yXNld0js2MmiRUGrc7imWzdUPbPcv9sdU
F7SsERGPIzYL8dIiHzit+YCoGCSXMg6peF37hHNp1TGCAsowggLGAgEBMFowRjELMAkGA1UEBhMC
TkwxGTAXBgNVBAoTEEdFQU5UIFZlcmVuaWdpbmcxHDAaBgNVBAMTE0dFQU5UIFBlcnNvbmFsIENB
IDQCEErw2KyHre3V5eVhBcxHfywwDQYJYIZIAWUDBAIBBQCgggFBMBgGCSqGSIb3DQEJAzELBgkq
hkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIyMDIxMDEyNTk1OFowLwYJKoZIhvcNAQkEMSIEIMYS
+Bd497RO5cMw324E71JAzVj7YxOTW8RTJw6+Dw+7MGkGCSsGAQQBgjcQBDFcMFowRjELMAkGA1UE
BhMCTkwxGTAXBgNVBAoTEEdFQU5UIFZlcmVuaWdpbmcxHDAaBgNVBAMTE0dFQU5UIFBlcnNvbmFs
IENBIDQCEErw2KyHre3V5eVhBcxHfywwawYLKoZIhvcNAQkQAgsxXKBaMEYxCzAJBgNVBAYTAk5M
MRkwFwYDVQQKExBHRUFOVCBWZXJlbmlnaW5nMRwwGgYDVQQDExNHRUFOVCBQZXJzb25hbCBDQSA0
AhBK8Nish63t1eXlYQXMR38sMA0GCSqGSIb3DQEBCwUABIIBAGG6i3xVWKMoTu3j00cFj9qew62K
snHq6YF9xBT9nEg0RzquGYpTaNEucwsPnYHowRgH2pdFSTjJ1Dz8pEldgiXSEsTFlgiaKLAiEot0
DRlpmrB3G5X7WzrObVsxmPdktfLb5HamMQ87YqI4OeYEXZh5Ml6ztS0+exy4sKp3nBVzAiP7biwa
y46tkxdBJe+HFsTn0MdamZfpcsb6obMbrBwZoCdZd0CWqn2Hvs5w55Kn+yVvhg/IUZRRz5zy21yL
SF2lsyruYr0g5T8Knyf2ZJaT/asHF1hhH3vQ9cu6c2CioB53OQ8wJhFY4heOFg7ZbMfkMTS6XhYt
lH83idgVqV4AAAAAAAA=
--Apple-Mail=_3CB374FB-3B59-48C5-B00B-824AC719A30B--
--===============3252938640707496124==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
xslt mailing list, project page http://xmlsoft.org/XSLT/
[email protected]
https://mail.gnome.org/mailman/listinfo/xslt
--===============3252938640707496124==--