【发布时间】:2014-02-26 17:32:16
【问题描述】:
我有一个函数可以检查几个参数的有效性并返回一个带有错误消息的字符串。在调用函数中,我正在做的是使用errorString.equals("") 方法检查返回的字符串是否为空。如果它不为空,则会显示错误消息。我听说字符串比较在 Java 中代价高昂。我可以使用的另一种方法是错误检查函数返回一个布尔值而不是字符串,并使errorString 成为全局字符串,调用函数检查返回的布尔值并在需要时显示errorString。进行此更改后,我可以期待多少性能改进?假设我的函数每分钟会被调用 1000 次。
编辑:- 例如:-
public void callingFunction(){
/*
some operations....
*/
String errors=checkErrors(param1,param1,param3,param4,param5);
if(!"".equals(errors)){
System.out.println(errors);
}
}
public String checkErrors(String param1,String pram2,String param3,String pram4,String param5){
String errors="";
if(param1 == null)
errors +="param1 is null";
if(param1.equals(""))
errors +="param1 is empty";
/*
A lot more validity checks...
*/
return errors;
}
【问题讨论】:
-
对于现代 CPU,"1000/minute" 非常慢。无论如何,优化时要查看的第一个位置是performance profile。由于所讨论的所有方法都具有相同的性能界限,因此“性能”只是无关紧要 (TM) - 如果有一些奇怪的机会,它确实很重要,您将能够通过性能概况(见上文)。
-
“程序优化的第一条规则:不要这样做。程序优化的第二条规则(仅供专家使用!):不要这样做。” — 迈克尔 A. 杰克逊
-
我在每个肩膀上平衡了两条滑溜溜的鱼。
-
对此我很抱歉,我将使用 Java :-)
标签: java performance optimization string-comparison