Нет, ты не разобрался просто. Байткод нельзя так сравнивать с нативным, потому что нативный исполняется на процессоре, а байткод - нет. Вот, смотри. Прога компилится в байткод и в таком виде поставляется в две конторы. Контора А считает ей поголовье крокодилов в Ниле, а контора Б - скорость утечки газа из газопровода, проходящего по территории Украины. Расчёты алгоритмически одни и те же, но данные разные и оборудование разное. Если бы проги компилились в нативный код, для максимального выйгрыша в производительности нужно было экземпляры прог А и Б скомпилировать с существенно разными параметрами оптимизации, но никто не заморачивался же. Для совместимости откомпилировали допустим в 486, чтобы гарантированно везде пошло, и всё. А JIT делает по-другому. Он переводит байткод в нативный при запуске. И может по ходу выполнения проги, прогнав её немного с конкретным набором данных, применять разные варианты оптимизации, в результате А и Б получают в действительности разный выполняемый код, который лучше оптимизирован под их оборудование и данные, и выполняется быстрее нативного, потому что после JIT в итоге получается не просто нативный код, но нативный код, оптимизированный под конкретные условия.
А экономить такты процессора для препятствования глобальному потеплению глупо. Во-первых, у индуса-быдлокодира всяко получится хуже заоптимизировать, чем JIT, во-вторых, индус-быдлокодир по-любому напердит больше парниковых газов чем процессор, и луче бы этому быдлокодиру поручить другую задачу, с которой он справился бы лучше процессора, чтобы уж хотя бы не зазря.
Re: LLVM
Нет, ты не разобрался просто. Байткод нельзя так сравнивать с нативным, потому что нативный исполняется на процессоре, а байткод - нет. Вот, смотри. Прога компилится в байткод и в таком виде поставляется в две конторы. Контора А считает ей поголовье крокодилов в Ниле, а контора Б - скорость утечки газа из газопровода, проходящего по территории Украины. Расчёты алгоритмически одни и те же, но данные разные и оборудование разное. Если бы проги компилились в нативный код, для максимального выйгрыша в производительности нужно было экземпляры прог А и Б скомпилировать с существенно разными параметрами оптимизации, но никто не заморачивался же. Для совместимости откомпилировали допустим в 486, чтобы гарантированно везде пошло, и всё. А JIT делает по-другому. Он переводит байткод в нативный при запуске. И может по ходу выполнения проги, прогнав её немного с конкретным набором данных, применять разные варианты оптимизации, в результате А и Б получают в действительности разный выполняемый код, который лучше оптимизирован под их оборудование и данные, и выполняется быстрее нативного, потому что после JIT в итоге получается не просто нативный код, но нативный код, оптимизированный под конкретные условия.
А экономить такты процессора для препятствования глобальному потеплению глупо. Во-первых, у индуса-быдлокодира всяко получится хуже заоптимизировать, чем JIT, во-вторых, индус-быдлокодир по-любому напердит больше парниковых газов чем процессор, и луче бы этому быдлокодиру поручить другую задачу, с которой он справился бы лучше процессора, чтобы уж хотя бы не зазря.
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.12) Gecko/20100826 Ubuntu/9.04 (jaunty) Shiretoko/3.5.12