正确的字符串比较
字符串比较方法的性能差别比较大。
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