Ответ 1
Недавно была аналогичная дискуссия, на вопрос Каковы преимущества байт-кода над собственным кодом?. Вы можете найти интересные ответы в этой теме.
Есть ли какая-либо производительность, которая должна быть получена в наши дни от компиляции java к собственному коду, или же современные компиляторы hotspot в конечном итоге делают это в течение долгого времени?
Недавно была аналогичная дискуссия, на вопрос Каковы преимущества байт-кода над собственным кодом?. Вы можете найти интересные ответы в этой теме.
Еще несколько анекдотических доказательств. Я работал над несколькими критически важными финансовыми приложениями в режиме реального времени. Я согласен с Фрэнком, почти каждый раз, когда ваша проблема заключается не в отсутствии компиляции, это ваш алгоритм или структура данных. Современные компиляторы горячего пятна очень хороши с правильным кодом, например библиотека CERN Colt находится в пределах 90% от скомпилированного оптимизированного Fortran для числовых работа.
Если вы беспокоитесь о скорости, я бы рекомендовал хороший профайлер и получить доказательства того, где ваши узкие места - я использую YourKit и были очень довольны.
Мы использовали только встроенный скомпилированный код для скорости в одном экземпляре за последние несколько лет, и это было так, что мы могли бы использовать CUDA и получить некоторые серьезные характеристики графического процессора.
Ваш вопрос немного большой, ответ сильно различается.
Все последние JVM используют JIT, но на старой JVM java-код на несколько раз замедляет этот собственный код.
Если у вас есть сервер, который работает в течение длительного периода времени или партии, которые повторяют один и тот же код снова и снова, разница и уровень очень низкий.
Мы написали одну и ту же партию как на С++, так и на Java и запускаем ее с различным набором данных, результат отличается примерно на 3 секунды, причем набор данных занимает от 5 минут до нескольких часов.
Но будьте осторожны, это особый случай, когда будет важное различие, например пакет, которому требуется много памяти.
Производительность памяти или производительность процессора? Или они те же самые дни?
Мое единственное доказательство является анекдотическим и на другой платформе: после переноса кучи головок, потребляющих процессор, на С# (.NET 2.0), я не заметил существенных потерь в производительности (я не считаю 10% существенным). Хорошо написанный код, кажется, хорошо работает на различных архитектурах.
Большинство приложений тратят время на трафик:
Поэтому, основываясь на моем опыте, если вы не пишете видеокодек, нет никакой пользы для компиляции Java-приложений, а просто полагаться на компиляторы hotspot.
Пробовал Hello-World с помощью шести различных реализаций, чтобы проверить накладные расходы и разница была ошеломляющей. Java была вне графика, а скомпилированные языки одинаково хорошо работали. Я мог бы доказать все доказательства (в воспроизводимых), если это необходимо.