热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

xslt是/when选择比if更有效-xsltis/whenischoosemoreefficientthanif

Iknowthat,generally,ifandchoosestatementsshouldbeavoidedindeferencetopatternmatching

I know that, generally, if and choose statements should be avoided in deference to pattern matching however I find myself in situation where I must use one or the other (this is caused by my need for sorting).

我知道,一般来说,如果和选择语句应该避免模式匹配,但我发现自己处于必须使用其中一种情况的情况(这是由于我需要排序)。

At any rate I can either use two statements or an statement that has a blank . I want to know which, if either, is more efficient.

无论如何,我可以使用两个 语句或一个空白 语句。我想知道哪一个更有效率。

Here is some dummy code:

这是一些虚拟代码:

XML


  
    
        
    
    
        
    
    
        
    
    
        
    
    
        
    
    
        
    
  

XSLT 1


    
        
  • less than two equals 3
  • XSLT 2

    
        
            
  • less than two equals 3
  • Thanks for your help!

    谢谢你的帮助!

    4 个解决方案

    #1


    2  

    When I looked into this ages ago, the only guidance I could find was in this KB article:

    当我在很久以前看过这篇文章时,我能找到的唯一指导就是这篇知识库文章:

    INFO: Techniques to Improve Performance of XSL Transformations

    信息:提高XSL转换性能的技术

    Reduce the usage of xsl:choose/xsl:when/xsl:otherwise. Performance is effected [sic] when the majority of selections fall through the otherwise clause. Therefore, match with when, and try to avoid using otherwise when you know that a particular value exists.

    减少xsl的使用:select / xsl:when / xsl:否则。当大多数选择通过其他条款落实时,性能[sic]实现。因此,当您知道特定值存在时,请与when匹配,并尽量避免使用。

    But I'm guessing it would be dependant on the XSLT processor you're using.

    但我猜它会依赖于你正在使用的XSLT处理器。

    #2


    3  

    In this instance it wouldn't actually make much difference. Your second 'when' test is only being executed one less time than your first.

    在这种情况下,实际上并没有太大的区别。你的第二次“何时”测试只比你的第一次执行时间短。

    That said, I would use the choose/when/otherwise solution if you are never expecting nor wanting both of these conditions to be true. It wouldn't seem logical to test both conditions knowing only one will be true, but depending on the factors being tested this will be inevitable.

    也就是说,如果您从未期望也不希望这两个条件都成立,我会使用choose / when / otherwise解决方案。知道只有一个条件是真的,测试这两个条件似乎不合逻辑,但根据被测试的因素,这将是不可避免的。

    Of course the benefit of the 'choose' is that you can easily set a fallback option, but you are not taking advantage of this. Not that it will make much difference but this 'otherwise' line will be executed whenever the two conditions return false even though it contains nothing.

    当然,“选择”的好处是您可以轻松设置后备选项,但您没有利用这一点。并不是说它会有很大的不同,但只要两个条件返回false就会执行这个“其他”行,即使它什么都不包含。

    If you were doing this conditional statement in another language like Javascript you probably wouldn't think twice about using if/else if/else solution - again, because you only want one condition to ever be true.

    如果您使用其他语言(如Javascript)执行此条件语句,您可能不会再考虑使用if / else if / else解决方案 - 再次,因为您只希望一个条件永远为真。

    I'm afraid the use of 'choose' over 'if' is conditional, it all depends on the data you are processing and what you are testing.

    我担心使用'select'而不是'if'是有条件的,这完全取决于你正在处理的数据和你正在测试的内容。

    This might be useful to an extent, another dev's view: http://xsltbyexample.blogspot.com/2008/02/when-to-use-xslif-and-xslwhen.html

    这可能在某种程度上是有用的,另一个开发者的观点:http://xsltbyexample.blogspot.com/2008/02/when-to-use-xslif-and-xslwhen.html

    #3


    1  

    It probably makes no significant difference, but in the version with the two if tests, both of the XPath conditions are always executed, whereas in the choose case, if the first if matches, the second will never have to be executed.

    它可能没有显着区别,但在具有两个if测试的版本中,两个XPath条件总是被执行,而在选择情况下,如果第一个if匹配,则第二个将永远不必执行。

    Stylus Studio, Oxygen, etc. all have profilers which measure this sort of thing, because like most optimization, it's usually best to measure and actually see than to try to do it by feel. And the particular XSLT engine will make a huge difference here.

    Stylus Studio,Oxygen等都有测量这种东西的分析器,因为像大多数优化一样,通常最好测量并实际看到,而不是尝试通过感觉来做。特定的XSLT引擎将在这里产生巨大的变化。

    #4


    1  

    It's very unlikely to make a difference. If it does, the difference will depend entirely on what XSLT processor you are using. The answer to performance questions is always: "measure it!".

    它不太可能有所作为。如果是这样,差异将完全取决于您使用的XSLT处理器。性能问题的答案总是:“衡量它!”。


    推荐阅读
    • 如何自行分析定位SAP BSP错误
      The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
    • Spring源码解密之默认标签的解析方式分析
      本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
    • XML介绍与使用的概述及标签规则
      本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
    • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
    • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
      本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
    • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
    • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
    • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
    • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
    • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
    • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
    • CF:3D City Model(小思维)问题解析和代码实现
      本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
    • 成功安装Sabayon Linux在thinkpad X60上的经验分享
      本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
    • Android源码深入理解JNI技术的概述和应用
      本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
    • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
    author-avatar
    日落月出星不离_887
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有