Виртуальная машина Оптимизация

голоса
8

Я возиться с игрушкой переводчика в Java , и я рассматривал пытаюсь написать простой компилятор , который может генерировать байт - код для виртуальной машины Java. Что заставило меня задуматься, сколько оптимизация должно быть сделано с помощью компиляторов , которые нацелены на виртуальные машины , такие как JVM и CLI?

Do Just In Time (JIT) компиляторы постоянное складывание, глазок оптимизаций и т.д.?

Задан 21/08/2008 в 15:41
источник пользователем
На других языках...                            


7 ответов

голоса
4

Я просто хочу добавить две ссылки , которые объясняют байткод в Java довольно хорошо , и некоторые из различной оптимизации в JVM во время выполнения.

Ответил 21/08/2008 в 20:22
источник пользователем

голоса
3

Оптимизация, что делает JVMs жизнеспособным среды для длительных приложений, вы можете поспорить, что ВС, IBM и друзья делают все возможное, чтобы гарантировать, что они могут оптимизировать байт-код и JIT-скомпилированный код эффективным способом, как это возможно.

При этом, как говорится, если вы думаете, что вы можете предварительно оптимизировать байт-код, то он, вероятно, не будет делать много вреда.

Стоит осознавать, однако, что JVMs может стремиться к более эффективно (и не врезаться), когда представлены только родом байткод компилятор Java стремится построить. Это не неизвестно для оптимизаций будут хватать даже для JVM аварии, когда перестановки байткодов происходят, которые являются правильными, но в отличие от того, что бы при JAVAC. Будем надеяться, что подобные вещи еще в прошлом в настоящее время, но может быть что-то, чтобы быть в курсе.

Ответил 17/09/2008 в 01:36
источник пользователем

голоса
3

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

Я не думаю, что это правда. Оптимизации как грузоподъемных инварианты цикла и распространяющаяся константу никогда не могут повредить, даже если виртуальная машина достаточно умна, чтобы сделать их самостоятельно, с помощью простой силы сделать код меньше работы.

Ответил 21/08/2008 в 15:52
источник пользователем

голоса
2

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

Ответил 17/12/2008 в 12:49
источник пользователем

голоса
1

HotSpot компилятор оптимизирует код во время выполнения лучше, чем это возможно во время компиляции - она ​​имеет больше информации для работы, в конце концов. Единственный раз, когда вы должны оптимизировать байт-код, а не только ваш алгоритм, когда вы ориентируетесь мобильных устройств, таких как Blackberry, где JVM для этой платформы не является достаточно мощным, чтобы оптимизировать код во время выполнения и просто выполняет байт-код.

Ответил 18/12/2008 в 13:24
источник пользователем

голоса
0

Обратите внимание на Aseraphim:

Она также может быть полезной для оптимизации байткода для не встроенных приложений в некоторых ограниченных случаях:

  1. При доставке коды по проводам, например, для Webstart приложений, чтобы минимизировать доставляемый / размер кэша и потому, что вам не обязательно знать о возможностях / скорости клиента.

  2. Для кода, который вы знаете, является производительностью критически и используются при пуске до (скажу) HotSpot успел собрать какую-либо статистику.

Опять же, преобразование, хороший Оптимизатор / обфускатор выполняет может быть очень полезным.

Ответил 31/12/2008 в 09:56
источник пользователем

голоса
0

Оптимизация байткод, вероятно, является оксюмороном в большинстве случаев. Если вы не контролировать VM, вы понятия не имеете, что это делает, чтобы ускорить выполнение кода, если что-нибудь. Компилятор должен был бы знать детали VM для того, чтобы генерировать оптимизированный код.

Ответил 21/08/2008 в 15:47
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more