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