java代码性能优化四

 

正确的字符串比较

        字符串比较方法的性能差别比较大。

        String.   equals( )>String.  equalsIgnoreCase( )>String.  toUpperCase( ).equals()

        通常如果不区分大小写时,将一个字符串变量与常量值比较最好使用   “xxx”. equalsIgnoreCase(var) ,有最好的性能。 var . equalsIgnoreCase(“xxx”) 不是好的写法,有出现空指针异常的风险。

      

        ToUpperCase 或 toLowerCase 方法会对字符串全拷贝,所以性能比较低。

正确解析 XML

        在测试中发现 Dom4jUtil.getElementValue 方法的性能有一些低,主要时间消耗在 DomHelper.parseText方法(将 XML 字符串解析成 DOM )上。

        改写成通过 STAX 查找元素再取值的实现方式后,性能提升明显。

        如对 "<ExtendOption><IsEncrypt>T</IsEncrypt></ExtendOption>" 解析 IsEncrypt 的值,前者需要 2MS,后者只需要 0.2MS 。并且前者消耗的时间会随 XML 的扩大而变化明显。

同时也发现, XMLInputFactory 和 XMLOutPutFactory 的 newInstance 时间比较长,感觉这两个Factory 只需要实例化一次,可以采用 Factory of Factory 模式进行优化。这个调整被证明是有问题的,导致 XML 解析异常!!!!

正确对 BEAN 属性赋值

在一个 JavaBean 内部,对属性赋值时最好不要使用 setXXX ,而是直接 xxx= ?,每次 setXXX 或getXXX 都是一次方法调用。这些 get 、 set 是给外部使用的,内部直接使用变量效率更高

正确设计方法参数,减少模型查询

由于对模型的查询比较消耗时间,正确的设计方法参数以重用查询结果可以提高效率。例如 :

BusinessLogic.loadBusinessNodes(String p_targetClsID,String p_userID, String p_appID, String p_stateID,String p_filterStr, String p_orderStr) 中首先取得 BusinessClass ,依据类型不同(结构或标准)调用不同的方法,而在这些方法中还会再次取得 BusinessClass ,可以考虑将第一次取得的 BusinessClass 向调用方法中传递。

当然这个例子可能性能问题并不明显,因为取 BusinessClass 时依据主键比较 快。

通过代码重构提升性能。

更多信息请查看 java进阶网 http://www.javady.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值