16 April 2015

PrintAssembly in Intel syntax

By default -XX:+PrintAssembly prints Assembly in AT&T syntax (used in GAS). Intel syntax available with -XX:PrintAssemblyOptions=intel. BTW another options available using -XX:PrintAssemblyOptions=hsdis-help.

27 January 2015

Производительность ArrayList.toArray(...)

Копия бенчмарка тут. Если вкратце, то:

  • ArrayList.toArray() - самый быстрый, так как создается Object[], а далее происходит копирование с помощью векторной инструкции AVX. Никаких проверок на совместимость типов.
  • ArrayList.toArray(new T[size]) - намного медленнее чем toArray(), так как здесь копирование происходит поэлементно из за проверки типов.
  • ArrayList.toArray(new T[0]) - что самое интересное быстрее, чем если бы мы передали преалоцированный массив нужного размера toArray(new T[size]). Причиной этому является тот факт, что когда мы передаем готовый массив, то JVM необходимо проинициализировать его null'овыми значениями (иначе говоря, обнулить). В случае когда мы передаем массив нулевого размера, то JVM сама создаст массив нужно размера и заполнит элементами из ArrayList, таким образом его не придется "обнулять".