Видимо, дело в JIT. После первого прогона JIT компилирует часть методов, а затем в процессе выполнения 10M операций понимает, что можно пересмотреть часть сделанных во время первой компиляции предположений, и оптимизирует код еще раз.
Возможно, конкретно в этом примере сказывается тот факт, что реализация ViaArrayList наследуется от ArrayList. Можно написать еще одну реализацию, которая бы не наследовалась, а включала в себя ArrayList, и посмотреть, изменится ли что-либо.
Comments 1
Возможно, конкретно в этом примере сказывается тот факт, что реализация ViaArrayList наследуется от ArrayList. Можно написать еще одну реализацию, которая бы не наследовалась, а включала в себя ArrayList, и посмотреть, изменится ли что-либо.
Reply
Leave a comment