LINUX.ORG.RU

Контекстно-зависимый инлайнинг трейсов в Java

 , ,


0

2

Сделал перевод доклада «Context-sensitive trace inlining for Java».

Прочитать можно здесь: русский | английский

По результатам доклада занятно то, что ни одна из статических оптимизаций не обогнала динамические. Одна приблизилась, но только для небольших размеров встроенного кода.

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

Благодаря такому нехитрому способу они разгромили client compiler из HotSpot (времен Java8 b12) на основе которого и делали свою работу, а в некоторых тестах типа скорости запуска приложения приблизились даже к server compiler.

★★★★☆

занятно то, что ни одна из статических оптимизаций не обогнала динамические

Зато отсутствие managed ограничений почти всегда позволит написать более быстрый код в нативе. Будем ждать динамический компилятор для какого-нибудь non-managed языка. Ну или отчётов о том, что связка native + PGO более эффективна.

dzidzitop ★★
()
Последнее исправление: dzidzitop (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.