1pub use crate::perf::PerfEntry;
2
3use crate::{
4 dto::page::{Page, PageRequest},
5 perf,
6};
7
8pub struct PerfOps;
13
14impl PerfOps {
15 pub(crate) fn record(label: &str, delta: u64) {
16 perf::record_timer(label, delta);
17 }
18
19 #[must_use]
20 pub fn snapshot(request: PageRequest) -> Page<PerfEntry> {
21 let request = request.clamped();
22 let offset = usize::try_from(request.offset).unwrap_or(usize::MAX);
23 let limit = usize::try_from(request.limit).unwrap_or(usize::MAX);
24
25 let entries = perf::entries();
26 let total = entries.len() as u64;
27 let entries = entries.into_iter().skip(offset).take(limit).collect();
28
29 Page { entries, total }
30 }
31}