J'ai une application en temps réel qui utilise XSLT1 et je veux passer à XSLT2. Actuellement, j'utilise le moteur Microsoft xslt1 qui fonctionne pour un xml spécifique et xsl dans les 0,1 seconde.XQSharp XSLT2 optimisation des performances
Pour la transformation XSLT2, j'ai créé une fonction qui utilise XQSharp pour effectuer une transformation xslt2. J'ai utilisé le même xml et xsl et la transformation a pris 0,9 seconde.
J'ai analysé mon code et il se révèle que plus de 90% du temps de traitement est causée par cette ligne:
Dim requête Comme Xslt = Xslt.Compile (New StringReader (inputXsl), querySettings)
Ma question est de savoir s'il existe un moyen d'accélérer ce processus?
Par exemple en changeant certains querySettings?
Mon code complet
<WebMethod()> _
Public Function XSLTXQSharp(ByVal inputXml As String, ByVal inputXsl As String) As String
Dim nameTable As XmlNameTable = New NameTable()
Dim xmlReaderSettings As New XmlReaderSettings()
xmlReaderSettings.NameTable = nameTable
Dim document As XdmDocument
Using reader As New StringReader(inputXml)
Using xmlReader As XmlReader = xmlReader.Create(reader, xmlReaderSettings)
document = New XdmDocument(xmlReader)
End Using
End Using
Dim querySettings As New XsltSettings(nameTable)
querySettings.ContextItemType = XdmType.Node
querySettings.ModuleResolver = New XmlUrlResolver()
''' SLOW!!! more then 90 % of execution time
Dim query As Xslt = Xslt.Compile(New StringReader(inputXsl), querySettings)
Dim contextItem As XPathNavigator = document.CreateNavigator()
Dim result As Stream = New MemoryStream()
query.ApplyTemplates(contextItem, result)
'Return dt2.Subtract(dt1).ToString()
result.Position = 0
Using reader As StreamReader = New StreamReader(result)
Return reader.ReadToEnd()
End Using
End Function
C'est drôle parce que je suis également intéressé par la comparaison avec Saxon, mais pour ce faire, je dois d'abord résoudre certains problèmes que j'ai avec la compilation de la même feuille de style dans Saxon. Voir [cette question] (http://stackoverflow.com/questions/6772630/getting-detailed-error-description-from-saxon-9-x-in-net) à propos de saxon que j'ai. – MLewi
Saxon fait la transformation en 0,45 s. – MLewi
Y a-t-il aussi des paramètres dans saxon qui peuvent avoir une influence sur les performances? – MLewi