You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Saxon中拆分XSLT里transform()函数的执行耗时?

拆分Saxon中transform()函数的内部执行耗时方法
  • 启用Saxon详细性能分析
    用Saxon命令行参数 -TP:output.html 运行转换,生成的HTML报告里会包含完整的性能拆解,不仅能看到wqml变量的总耗时,还能细化到transform()内部的样式表编译、节点处理、模板执行等各个阶段的具体耗时。

  • 拆分transform()调用步骤
    把原有的单步调用拆成多个变量,分别对应样式表加载和实际转换:

    <xsl:variable name="compiled-stylesheet" select="xsl:compile($xsl)"/>
    <xsl:variable name="wqml" select="transform(map{'stylesheet-node':$compiled-stylesheet, 'source-node':$xml})?output"/>
    

    这样在追踪时就能分别看到样式表编译阶段和实际转换阶段的耗时,拆分出transform内部的核心环节。

  • 通过API注册性能监听
    如果是用Java或.NET API调用Saxon,可以自定义ProfileListener并注册到转换配置中,监听子样式表执行时的模板匹配、函数调用等事件,以此捕获transform内部每一步的耗时,实现最细粒度的统计。

  • 在子样式表内添加自定义追踪
    要是能修改$xsl对应的子样式表,可以在子样式表的关键位置(比如入口模板、复杂函数前后)用current-dateTime()记录时间戳,计算并输出各环节的耗时,直接获取子样式表内部的执行细节。

内容的提问来源于stack exchange,提问作者lschult2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:25:24