Да, но в определенной степени - это хорошая возможность для образования, чтобы увидеть, что происходит под капотом, но, вероятно, должно быть сделано в умеренных количествах.
Это может быть хорошо, поскольку просмотр байт-кода может помочь понять, как исходный код Java будет скомпилирован в байт-код Java. Кроме того, он может дать некоторые идеи о том, какие оптимизации будут выполняться компилятором, и, возможно, некоторые ограничения на объем оптимизации, которую может выполнить компилятор.
Например, если строка конкатенации выполняется, javac
позволит оптимизировать конкатенацию в использовании StringBuilder
и выполняя append
методы конкатенации String
с.
Однако, если конкатенация выполняется в цикле, новый StringBuilder
может быть реализован на каждой итерации, что приводит к возможному снижению производительности по сравнению с вручную инстанцировании StringBuilder
вне цикла, и только выполняя append
S внутри цикла.
По вопросу о JIT. Компиляция «точно в срок» будет специфичной для JVM-реализации, поэтому не очень легко узнать, что на самом деле происходит с байт-кодом, когда оно преобразуется в собственный код, и, кроме того, мы не можем определить, какие части (по крайней мере, не с некоторыми инструментами JVM, чтобы увидеть, какая компиляция JIT выполняется - я не знаю каких-либо специфических особенностей в этой области, поэтому я просто размышляю.)
Это говорит о том, JVM собирается исполнять байт-код в любом случае, то, как он выполняется, более или менее непрозрачен для разработчика, и снова JVM-specific. Могут быть некоторые трюки производительности, которые одна JVM выполняет, а другая - нет.
Когда дело доходит до вопроса о создании байт-кода, оно сводится к изучению того, что на самом деле происходит с исходным кодом, когда оно скомпилировано в байт-код. Возможность видеть виды оптимизаций, выполняемых компилятором, но также понимание того, что существуют ограничения на способ выполнения компилятором оптимизаций.
Все, что сказал, я не думаю, что это действительно хорошая идея, чтобы стать навязчивыми в отношении генерации байткода и попытаться написать программы, которые будут излучать наиболее оптимизированный байт-код. Что еще более важно, так это написать исходный код Java, который читается и поддерживается другими.
Но Коул Трикл стал лучшим гонщиком, узнав о внутренних автомобилях. – Boune