值判斷的性能比較

經常寫業務代碼,會有對字段值的判斷,首先要校驗非空,然後做值判斷。如果值爲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萬次,差別還是挺大的。
原因:創建一個對象比較耗時。

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