使用异常处理业务逻辑的效率问题

审计日志功能要把记录值记录数据库,并根据model对象字段上Colum注解的name属性记录字段的注释。代码中在获取这个name注释时候,直接获取注解并获取name属性,当字段没注解就会有指针异常,在catch异常后,就认为没有设置注释,就设置为空。在印象中这样把异常当作业务逻辑处理的效率很低,百度也是有说明这点,然后就进行试验。
俩个方法:接收字符串,如果为空返回0,不为空返回字符串长度,
一个用异常处理:

try{
return s.length();
}catch(Exception){
return 0
}

一个不用异常

if(s==null){
return 0;
}else{
return s.length
}

测试结果

执行次数 用异常 不用异常
一千万次 274586 8
一百万次 28665 3
十万次 2936 3
一万次 308 1
一千次 16 0

可以看出用异常的执行效率随着次数指数级增长,不用异常的效率比用异常效率快多了,所以在义务逻辑处理是尽量不要用异常。。

你可能感兴趣的:(笔记,java,数据库)