我有一個使用XSLT1的實時應用程序,我想升級到XSLT2。 目前我正在使用microsoft xslt1引擎,它在0.1秒內執行特定的xml和xsl。XQSharp XSLT2性能調整
對於XSLT2轉換,我創建了一個使用XQSharp執行xslt2轉換的函數。我使用了相同的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
撒克遜還有一些設置可以影響性能嗎? – MLewi