首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XQSharp XSLT2性能调优

XQSharp XSLT2性能调优
EN

Stack Overflow用户
提问于 2011-07-21 11:55:44
回答 2查看 250关注 0票数 0

我有一个使用XSLT1的实时应用程序,我想升级到XSLT2。目前,我正在使用,它在0.1秒内执行特定的xslt1和xsl操作。

对于XSLT2转换,我创建了一个使用XQSharp执行xslt2转换的函数。我使用了相同的xml和xsl,转换花费了0.9秒。

我分析了我的代码,结果发现超过90%的处理时间是由这一行造成的:

Dim查询为Xslt =Xslt.Compile(新StringReader(inputXsl),querySettings)

我的问题是,有没有办法加快这一进程?

例如,通过改变一些querySettings?

我的完整代码

代码语言:javascript
复制
   <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
EN

回答 2

Stack Overflow用户

发布于 2011-07-21 21:16:41

尝试更改优化级别。它是静态上下文设置上的一个属性。看到您正在尝试编译的转换将是有帮助的。

请注意,Microsoft编译器非常快速,它编译成字节码。XQSharp倾向于使用更复杂的样式表,或者XSLT2.0特性(例如,对于每个组)正在取代XSLT1.0中键的使用。

票数 1
EN

Stack Overflow用户

发布于 2011-07-21 14:16:28

您可能会发现,您需要使用一个特定于XQSharp的论坛。

在这种情况下,是否使用大型复杂样式表来转换小型源文档?

您没有办法分摊编译样式表的成本,然后缓存结果以用于许多转换吗?开发人员经常会认为,如果代码减少了运行时的执行时间,那么编译期间优化代码的时间就会花得很好--这似乎与编写此工作负载的方式不同。

从纯粹自私的角度来看,我很想知道这些数字与撒克逊的比较情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6775613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档