Санкт-Петербургская группа тестирования JVM


« Новые оптимизации... | Main | Построение native-ко... »
20060823 среда Август 23, 2006

Новые оптимизации компилятора VM. Часть 4: System.arraycopy()

Функция java.lang.System.arraycopy() интенсивно используется и в библиотеках JDK и в обычных Java-приложениях. Для повышения производительности компиляторы встраивали эту функцию в код (inline), но не делали никаких других отптимизаций, повышающих скорость ее выполнения (не проверяли выравнивание, перекрывающиеся блоки памяти, и т. д.). В результате, производительность была неплохой, однако ее можно было улучшить.

В HotSpot 1.6 для каждого размера типа данных на ассемблере написаны высокоэффективные процедуры, предполагающие неперекрывающиеся блоки памяти. При этом компилятор производит простой тест: если блоки перекрываются, то используется тот же код, что и раньше, в противном случае вызываются ассемблерная процедура. Эта оптимизация была портирована и в HotSpot 1.5.

Как результат, наблюдается небольшое уменьшение производительности для малых массивов (1–4 элемента), а для массивов с числом элементов более 20-и наблюдается как минимум двукратное увеличение скорости копирования.

Игорь Привалов

опубликовал vmrobot ( авг 23 2006, 08:36:54 PM MSD ) Permalink Комментарии [1]

Trackback URL: http://blogs.sun.com/vmrobot/entry/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D0%B0_vm_%D1%87%D0%B0%D1%81%D1%82%D1%8C3
Комментарии:

Да, если профилять програму с плоским профилем, то среди многих теплых мест всегда можно заметить System.arraycopy(). Инетересны еще два примитива: Hashtable.get() и оператор new, которые также всегда заметны в профиле, :). Эти три примитива иллюстрируют, что на самом деле делает любая Java программа: аллоцирует объекты и кэширует их в хэштаблице, а также все время перекладывает их с места на место (к примеру для того чтобы переаллоцировать ту же хэштаблицу).

опубликовал Никита Январь 09, 2007 at 03:32 PM MSK #

Опубликовать комментарий:

Имя
E-Mail:
URL:

Ваш комментарий:

HTML Syntax: Отключен

Хиты страниц за сегодня: 17