Класс Instant
Класс Instant из модуля std::time представляет собой непрозрачную точку во времени, которая обычно используется для измерения того, сколько времени прошло между двумя событиями. Значение Instant нельзя преобразовать в календарную дату или время суток, зато его удобно сравнивать и вычитать, получая объект Duration. Объект Instant создаётся методом now, который возвращает текущий момент времени, и является монотонным: он никогда не идёт назад, даже если системные часы были скорректированы.
Синтаксис
use std::time::Instant;
let start = Instant::now();
Пример
Давайте замерим, сколько времени занимает простой цикл, создав точку отсчёта методом now и вычислив прошедшее время методом elapsed:
use std::time::Instant;
fn main()
{
let start = Instant::now();
let mut sum = 0;
for i in 0..1000000
{
sum += i;
}
let duration = start.elapsed();
println!("{}", sum);
println!("{:?}", duration);
}
Результат выполнения кода:
499999500000
1.234ms
Пример
Давайте сравним два момента времени и проверим, что более поздний объект Instant действительно больше:
use std::time::Instant;
fn main()
{
let first = Instant::now();
let second = Instant::now();
let res = second > first;
println!("{}", res);
}
Результат выполнения кода:
true
Пример
Давайте вычислим разницу между двумя моментами времени методом duration_since и выведем её в миллисекундах:
use std::time::Instant;
fn main()
{
let start = Instant::now();
let end = Instant::now();
let diff = end.duration_since(start);
println!("{}", diff.as_millis());
}
Результат выполнения кода:
0
Смотрите также
-
метод
now,
который возвращает текущий момент времени -
метод
elapsed,
который возвращает время, прошедшее с момента создания объекта -
метод
duration_since,
который возвращает разницу между двумя моментами времени -
метод
checked_duration_since,
который безопасно возвращает разницу между моментами времени