РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
831 of 1245 menu

Атрибут #[bench]

Атрибут #[bench] помечает функцию как бенчмарк, который измеряет время выполнения участка кода. Функция-бенчмарк принимает параметром изменяемую ссылку на объект Bencher и внутри своего тела вызывает метод iter, принимающий замыкание с тестируемым кодом. Атрибут доступен только в ночном (nightly) Rust, так как бенчмарки пока не стабилизированы.

Синтаксис

#[bench] fn bench_name(b: &mut Bencher) { b.iter(|| { // tested code }); }

Пример

Давайте напишем простой бенчмарк, который измеряет время сложения двух чисел:

#![feature(test)] extern crate test; use test::Bencher; #[bench] fn bench_sum(b: &mut Bencher) { b.iter(|| { let res = 2 + 2; res }); }

Результат выполнения бенчмарка:

test bench_sum ... bench: 1 ns/iter (+/- 0)

Пример

Давайте напишем бенчмарк, который измеряет время создания вектора из пяти элементов:

#![feature(test)] extern crate test; use test::Bencher; #[bench] fn bench_vec(b: &mut Bencher) { b.iter(|| { let res = vec![1, 2, 3, 4, 5]; res }); }

Результат выполнения бенчмарка:

test bench_vec ... bench: 20 ns/iter (+/- 1)

Пример

Давайте напишем бенчмарк, который измеряет время конкатенации двух строк:

#![feature(test)] extern crate test; use test::Bencher; #[bench] fn bench_concat(b: &mut Bencher) { b.iter(|| { let res = format!("{}{}", "abcde", "12345"); res }); }

Результат выполнения бенчмарка:

test bench_concat ... bench: 45 ns/iter (+/- 2)

Смотрите также

  • атрибут test,
    который помечает функцию как тест
  • атрибут cfg(test),
    который включает модуль только в режиме тестирования
  • модуль mod tests,
    который хранит тестовые функции
  • команда cargo test,
    которая запускает тесты и бенчмарки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить