私はXSLT1を使用するリアルタイムアプリケーションを持っており、XSLT2にアップグレードしたいと考えています。 現在、私は0.1秒以内に特定のxmlとxslを実行するmicrosoft xslt1エンジンを使用しています。XQSharp XSLT2パフォーマンスチューニング
XSLT2変換では、xslt2変換を実行するためにXQSharpを使用する関数を作成しました。私は同じxmlとxslを使い、変換には0.9秒かかりました。
私は私のコードを分析し、それが処理時間のより多くのそして90%がこの行によって引き起こされることが判明:
XSLT = Xslt.Compile(新しいにStringReader(inputXsl)、querySettings)として暗いクエリ
私の質問は、このプロセスをスピードアップする方法がありますか?
たとえば、いくつかのquerySettingsを変更しますか?
私の完全なコード
<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
Saxonとの比較にも興味がありますが、これを行うにはSaxonで同じスタイルシートをコンパイルする際の問題を解決しなければならないので面白いです。サクソンについては、[この質問](http://stackoverflow.com/questions/6772630/getting-detailed-error-description-from-saxon-9-x-in-net)を参照してください。 – MLewi
サクソンは0,45秒で変形を行っています。 – MLewi
saxonにはパフォーマンスに影響を与える設定がありますか? – MLewi