Функция hint::black_box
Функция black_box из модуля std::hint является
специальной функцией, которая предотвращает оптимизации
компилятора. Она заставляет компилятор думать, что переданное
значение является неизвестным и может быть использовано
произвольным образом. Функция принимает значение любого типа
T и возвращает его же, но компилятор не может
оптимизировать код, полагаясь на знание о значении.
Особенно полезна при написании бенчмарков и тестов
производительности.
Синтаксис
std::hint::black_box(value)
Пример
Давайте рассмотрим простой пример использования функции
black_box для предотвращения оптимизации вычислений:
use std::hint::black_box;
fn main()
{
let res = black_box(2 + 2);
println!("{}", res);
}
Результат выполнения кода:
4
Пример
Давайте используем black_box в цикле для измерения
производительности:
use std::hint::black_box;
fn main()
{
let mut res = 0;
for i in 0..5 {
res += black_box(i);
}
println!("{}", res);
}
Результат выполнения кода:
10
Пример
Давайте применим black_box к вектору, чтобы
предотвратить оптимизацию его обработки:
use std::hint::black_box;
fn main()
{
let vec = vec![1, 2, 3, 4, 5];
let res = black_box(&vec).iter().sum::<i32>();
println!("{}", res);
}
Результат выполнения кода:
15
Смотрите также
-
макрос
bench,
который используется для написания бенчмарков -
атрибут
ignore,
который позволяет пропускать тесты при запуске -
макрос
assert!,
который проверяет истинность утверждения в тестах -
атрибут
should_panic,
который проверяет, что код вызывает панику