Появились подсказки компилятору о предварительной загрузке данных и инструкций

10.12.2025

В модуле core::hint появились четыре подсказки компилятору о предварительной загрузке: для чтения данных, для записи данных, для чтения инструкций и для записи инструкций.

Что это и чем не является

Это именно подсказки, а не операции. Они не вызывают ничего и не гарантируют эффект: если процессор не поддерживает предварительную загрузку, вызов просто ничего не делает.

Смысл в том, чтобы дать компилятору знание о будущем. Код может знать, что через строку или через тысячу элементов будет обращение к памяти, а компилятор — нет: он видит только конкретные обращения и не может предположить, что следующий цикл будет тем же.

Четыре варианта

Разделение по чтению и записи существенно, потому что у процессоров разные инструкции для этих случаев. Разделение по данным и инструкциям — потому что подсказка должна знать, что именно будет скоро запрошено: содержимое памяти или код.

Один из вариантов, для записи инструкций, решено не экспортировать — то есть состав методов ещё может измениться.

Где это полезно

Обход больших массивов, когда элементы известны заранее. Код с признаком, что будет обращение к строке. Собственные структуры данных, где доступ заранее просчитан.

Оригинал

add core::hint::prefetch_{read, write}_{data, instruction}

Упоминаний: 1 · Просмотров: 2