值判断的性能比较

经常写业务代码,会有对字段值的判断,首先要校验非空,然后做值判断。如果值为null,不校验直接判断会引起异常,如果异常处理不当会引发事故。

所以,这样写会很简便:

new Integer(8).equals(d)

把比对的值放在Integer里,即便变量d为null也不会异常。

但是,这种写法的性能就比较低,下面比较一下:

    public static void main(String[] args) {
        Integer d = null;

        Date start = new Date();
        for (int i = 0; i < 100000; i++) {
            if(new Integer(8).equals(d)){}
        }
        Date end = new Date();
        System.out.println(1 + "-time:" + (end.getTime() - start.getTime()));

        Date start2 = new Date();
        for (int i = 0; i < 100000; i++) {
            if(d != null && d == 8 ){}
        }
        Date end2 = new Date();
        System.out.println(2 + "-time:" + (end2.getTime() - start2.getTime()));
    }

执行结果:

1-time:28
2-time:1

循环10万次,差别还是挺大的。
原因:创建一个对象比较耗时。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章