我们目前有一个巨大的XSLT转换,需要20-30分钟来处理。我们需要提高性能,我们正在考虑CDuce。 CDuce看起来很有希望。这样做的好方法是什么?我们是否必须重写CDuce中的整个xsl逻辑?我们应该重写CDuce中的XSL吗?
-1
A
回答
2
您可以用另一种语言重写它,但可能有更简单的选项,它取决于XSLT 1代码的效率。如果它大量使用//
,通过重写它不要使用//
并改为使用键或其他构造来获得数量级的速度改进并不是不寻常的。当然,切换到更新的更高度优化的XSLT引擎也不会受到影响。 (您的问题标记为xslt 1,但XSLT2引擎可以在没有或几乎没有变化的情况下运行)
+0
我遵循了你的建议,并且我们看到通过重构几个//选择而显着的改进。谢谢。 – Natkeeran
相关问题
- 1. 我们应该总是重写equals吗?
- 2. 设计不当的应用程序:我们应该重写吗?
- 3. 我应该重写默认的ExecutionContext吗?
- 4. 我应该重写==对象和MyType吗?
- 5. 我们应该开源吗?
- 6. HandlerThread应该重写run()吗?
- 7. 我们应该在不同的调用中重用cublasHandle_t吗?
- 8. 我应该大写我的常量吗?
- 9. 我应该有多少个SSH密钥?我应该重用它们吗?
- 10. 在Java中重写hashCode()时应该重写'equals'(Object)方法吗?
- 11. 我们应该在连接表模型上编写dependent:destroy吗?
- 12. Zend_Db_Table_Abstract - 我们应该使用我们的表列名称吗?
- 13. 为了记录的目的,我应该重写ToString吗?
- 14. 我们还应该支持iOS 4吗?
- 15. 我们应该直接使用ScalaSignature吗?
- 16. AS3类 - 我应该使用它们吗?
- 17. 我们应该嵌套goroutines吗?
- 18. 我们应该引入BizTalk/ESB吗?
- 19. 我们应该使用Twitter Bootstrap吗?
- 20. 我们应该使用insertRow()和acceptChanges()吗?
- 21. 我们应该使用jms吗?
- 22. 我们还应该为MSIE7开发吗?
- 23. 我们应该使用CSS框架吗?他们值得吗?
- 24. 为什么我们应该重写一个方法?
- 25. 我应该使用基于java的重写而不是mod_rewrite吗?
- 26. 我应该用Python重写过时的tawk例程吗?
- 27. TempDB性能爬行;我们应该重启吗?
- 28. 我应该在我的包装脚本中重写Chocolatey的警告消息吗?
- 29. 当我们有UICollectionView时,我们应该使用UITableView吗?
- 30. 当我重写getter时,我应该释放dealloc中的对象吗?
您应该了解为什么您的XSL需要这么长时间。 如果输入文件“很大”,则可能需要很长时间才能使用任何语言。 XSL样式表可能写得不好,或者可能会导致处理效率低下。也许不同的XSLT引擎会表现更好。 如果您在不了解现有系统低效率的情况下进行大量重写,则可能会导致速度不够快。 –
发布一些示例输入和足够的样式表,以便我们可以看到它使用的整体方法。 –
总的来说,性能问题的唯一好方法是:度量。如果不仔细衡量以找出性能瓶颈,所有关于什么导致程序变慢的猜测都可能是毫无价值的,或者说比毫无价值(因为它们会诱使你浪费时间去处理不相关的变化)。一般来说,尝试使用多个XSLT处理器进行转换,测量它以查找热点,尝试重新构建热点并咨询供应商,而不是将“庞大”程序转换为其他语言会更简单。 –