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.
05 February 2015
27 January 2015
Производительность ArrayList.toArray(...)
Another VM performance puzzler, ArrayList.toArray(...) performance:
http://t.co/3w7msVykwK
/cc @twillouer
— Aleksey Shipilëv (@shipilev) January 24, 2015
Копия бенчмарка тут.
Если вкратце, то:
- ArrayList.toArray() - самый быстрый, так как создается Object[], а далее происходит копирование с помощью векторной инструкции AVX. Никаких проверок на совместимость типов.
- ArrayList.toArray(new T[size]) - намного медленнее чем toArray(), так как здесь копирование происходит поэлементно из за проверки типов.
- ArrayList.toArray(new T[0]) - что самое интересное быстрее, чем если бы мы передали преалоцированный массив нужного размера toArray(new T[size]). Причиной этому является тот факт, что когда мы передаем готовый массив, то JVM необходимо проинициализировать его null'овыми значениями (иначе говоря, обнулить). В случае когда мы передаем массив нулевого размера, то JVM сама создаст массив нужно размера и заполнит элементами из ArrayList, таким образом его не придется "обнулять".
Subscribe to:
Posts (Atom)