Когда я измерить производительность моего приложения Java, я вижу увеличение 50% производительности с течением времени:Java/JVM (HotSpot): Есть ли способ сохранить прирост производительности JIT во время компиляции?
- Для первых 100K сообщений, я получаю ~ 3000 сообщений в секунду
- Для второго 100K сообщений, Я получаю ~ 4,500 сообщений в секунду.
Я считаю, что производительность улучшается, поскольку JIT оптимизирует путь выполнения.
В качестве причины не сохранения JIT компиляции является то, что «Оптимизация, что JVM выполняет не являются статичными, а динамическими, на основе моделей данных, а также шаблонах кода. Вполне вероятно, что эти структуры данных будут изменяются в течение срока службы приложения, делая кешированные оптимизации менее оптимальными ».
Тем не менее, я знаю, что эти шаблоны данных не будут меняться во время жизни приложения или даже в течение нескольких жизней приложений. Итак, как я могу «сохранить» эти приросты производительности в JVM HotSpot?
См. Также соответствующие question и discussion.
Это немного глупый комментарий, но я собираюсь сказать это в любом случае, чтобы помочь дебатам - мне как интересно узнать ответ, как и все остальные! :) Я бы предположил, что определенные оптимизации, выполняемые JVM, будут зависеть от обрабатываемых данных. Если ваши данные не идентичны (включая время, в которое оно поступило), выполненные оптимизации могут быть разными каждый раз.Если данные всегда одни и те же, то вам нужно только запустить приложение один раз :) – Rich
Существует также это: http://stackoverflow.com/questions/2178640/is-there-a-way-to-save-the- java-jit-information-for-the-next-run-so-that-i-dont – Rich
Если бы вы знали, какие оптимизации использует VM с вашим кодом, и вы знаете, что шаблоны данных не изменятся, возможно ли это для вас использовать то, что было оптимизировано, и изменить логику вашего приложения, чтобы отразить это? –