Jump to content

Устранение проверки границ

В информатике или исключение проверки границ — это оптимизация компилятора, полезная в языках программирования системах времени выполнения , которые обеспечивают проверку границ , практику проверки каждого индекса в массиве для проверки того, что индекс находится в пределах определенного допустимого диапазона индексов. [1] Его цель — определить, какие из этих операций индексирования не нуждаются в проверке во время выполнения , и исключить эти проверки.

Одним из распространенных примеров является доступ к элементу массива, его изменение и сохранение измененного значения в том же массиве и в том же месте. Обычно этот пример приводит к проверке границ, когда элемент считывается из массива, и второй проверке границ, когда измененный элемент сохраняется с использованием того же индекса массива. Исключение проверки границ может исключить вторую проверку, если компилятор или среда выполнения могут определить, что ни размер массива, ни индекс не могут измениться между двумя операциями с массивом. Другой пример возникает, когда программист перебирает элементы массива, и условие цикла гарантирует, что индекс находится в пределах границ массива. Может быть трудно обнаружить, что ручная проверка программиста делает ненужной автоматическую проверку. Однако в этом случае компилятор или среда выполнения все равно могут выполнить правильное исключение проверки границ.

Реализации

[ редактировать ]

На родно компилируемых языках

[ редактировать ]

Один из методов исключения проверки границ — использовать типизированное статическое представление в форме одного присваивания и создать для каждого массива новый тип, представляющий безопасный индекс для этого конкретного массива. Первое использование значения в качестве индекса массива приводит к приведению типа во время выполнения (и соответствующей проверке), но впоследствии значение безопасного индекса можно использовать без приведения типа, не жертвуя правильностью или безопасностью.

На языках, компилируемых JIT

[ редактировать ]

Языки , компилируемые точно в срок, такие как Java и C#, часто проверяют индексы во время выполнения, прежде чем обращаться к массивам . Некоторые JIT-компиляторы, такие как HotSpot, могут исключить некоторые из этих проверок, если они обнаружат, что индекс всегда находится в правильном диапазоне или если более ранняя проверка уже вызвала бы исключение. [2] [3]

  1. ^ Стивен Мучник; Мучник и партнеры (15 августа 1997 г.). Расширенная реализация проекта компилятора . Морган Кауфманн. ISBN  978-1-55860-320-2 . устранение проверки границ.
  2. ^ Кавагути, Косуке (30 марта 2008 г.). «Глубокое погружение в ассемблерный код Java» . Архивировано из оригинала 2 апреля 2008 г. Проверено 2 апреля 2008 г.
  3. ^ «Быстрая и эффективная генерация кода с помощью JIT-компилятора Java» (PDF) . Корпорация Интел . Проверено 22 июня 2007 г.
[ редактировать ]


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