java 測試:iterator foreach for 三種迭代方式哪一種更快?

代碼:java

public class main {
    public static void main(String[] p_args){
        ArrayList<String> _l_string = new ArrayList<>();
        for (int o_a = 0; o_a < 100000; o_a++) {
            _l_string.add(String.valueOf(o_a));
        }
        c_public_countTime _countTime = new c_public_countTime();
        _countTime.f_begin();
        for (int i = 0; i < _l_string.size(); i++) {
            System.out.print(_l_string.get(i));
        }
        String _time_for = _countTime.f_done();
        _countTime.f_begin();
        for (String o_a :
                _l_string) {
            System.out.print(o_a);
        }
        String _time_foreach = _countTime.f_done();
        _countTime.f_begin();
        for (Iterator<String> o_iterator = _l_string.iterator(); o_iterator.hasNext();) {
            System.out.print(o_iterator.next());
        }
        String _time_iterator = _countTime.f_done();

        System.out.println("\niterator:" + _time_iterator + "\nfor:" + _time_for + "\nforeach:" + _time_foreach );
    }
}

結果:多是因爲 java 內部執行的緣由,不一樣的順序形成的時長也各不相同,這裏採集了一點數據樣本。spa

(速度、前後順序、時長)code

#2 for:354 毫秒blog

#1 foreach:263 毫秒get

#3 iterator:425 毫秒string

小結:for 以後的 foreach 增長了速度。it

=class

#1 for:285 毫秒foreach

#2 iterator:301 毫秒List

#3 foreach:363 毫秒

小結:for 首次出場也得到了最快速度。

===

#3 foreach:517 毫秒

#1 for:285 毫秒

#2 iterator:478 毫秒

小結:foreach 首次出場速度不佳,for 速度跟首次出場速度一致。

=

#3 foreach:416 毫秒

#1 iterator:317 毫秒

#2 for:321 毫秒

小結:即便在 iterator 得到最快速度的時候,for 也有幾乎沒有差異的速度。 

===

#2 iterator:396 毫秒

#3 foreach:415 毫秒

#1 for:253 毫秒

小結:for 在最後出場的時候得到了最快速度。

===

#3 iterator:417 毫秒
#1 for:332 毫秒
#2 foreach:334 毫秒

小結:for 得到了最佳速度。

總結:iterator 和 foreach 並不會提升迭代的速度。因此應該經過必要的理由來使用它們,不然仍是默認 for 比較快。

相關文章
相關標籤/搜索