Jump to content

Динамическая компиляция

Динамическая компиляция — это процесс, используемый некоторыми реализациями языков программирования для повышения производительности во время выполнения программы. Хотя эта техника зародилась в Smalltalk , [1] Самый известный язык, использующий эту технику, — Java . Поскольку машинный код , создаваемый динамическим компилятором, создается и оптимизируется во время выполнения программы, использование динамической компиляции позволяет оптимизировать эффективность, недоступную для статически скомпилированных программ (т. е. программ, скомпилированных так называемым «пакетным компилятором», как написано ниже). ), за исключением дублирования кода или метапрограммирования .

В средах выполнения, использующих динамическую компиляцию, программы обычно работают медленно в течение первых нескольких минут, а затем большая часть компиляции и перекомпиляции выполняется и выполняется быстро. Из-за этой начальной задержки производительности динамическая компиляция в некоторых случаях нежелательна. В большинстве реализаций динамической компиляции некоторые оптимизации, которые можно было бы выполнить во время начальной компиляции, откладываются до дальнейшей компиляции во время выполнения , что приводит к дальнейшему ненужному замедлению работы. Компиляция «точно в срок» — это форма динамической компиляции.

Инкрементная компиляция [ править ]

Близко связанный метод — инкрементная компиляция . Инкрементный компилятор используется в POP-2 , POP-11 , Forth , некоторых версиях Lisp , например Maclisp и по крайней мере в одной версии ML ( Poplog ML).Для этого необходимо, чтобы компилятор языка программирования был частью системы времени выполнения. Как следствие, исходный код может быть прочитан в любое время из терминала, из файла или, возможно, из структуры данных, созданной работающей программой, и преобразован в блок машинного кода или функцию (которая может заменить предыдущую функцию). с тем же именем), который затем сразу же доступен для использования программой. Из-за необходимости обеспечения скорости компиляции во время интерактивной разработки и тестирования скомпилированный код, скорее всего, не будет так сильно оптимизирован, как код, создаваемый стандартным «пакетным компилятором», который считывает исходный код и создает объектные файлы, которые впоследствии можно скомпоновать. и беги. Однако инкрементально скомпилированная программа обычно работает намного быстрее, чем интерпретированная версия той же программы. Таким образом, инкрементная компиляция обеспечивает сочетание преимуществ интерпретируемых и компилируемых языков. Для облегчения переносимости обычно желательно, чтобы инкрементальный компилятор работал в два этапа, а именно: сначала компилируется в какой-то промежуточный, независимый от платформы язык, а затем компилируется из него в машинный код для хост-машины. В этом случае для портирования требуется только изменить компилятор «внутренней части». В отличие от динамической компиляции, определенной выше, инкрементальная компиляция не предполагает дальнейшей оптимизации после первого запуска программы.

См. также [ править ]

Ссылки [ править ]

  1. ^ Питер Л. Дойч и Алан Шиффман. «Эффективная реализация системы Smalltalk-80», 11-й ежегодный симпозиум по принципам языков программирования, январь 1984 г., стр. 297-302.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 78cf95b42399028a296f8aab896ad528__1703163480
URL1:https://arc.ask3.ru/arc/aa/78/28/78cf95b42399028a296f8aab896ad528.html
Заголовок, (Title) документа по адресу, URL1:
Dynamic compilation - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)