mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-05-21 15:24:48 -07:00
46 lines
1.1 KiB
Rust
46 lines
1.1 KiB
Rust
const KIB: f64 = 1024.0;
|
|
const MIB: f64 = KIB * 1024.0;
|
|
const GIB: f64 = MIB * 1024.0;
|
|
|
|
const MINUTE: f64 = 60.0;
|
|
const HOUR: f64 = 3600.0;
|
|
|
|
/// Returns (scaled_value, unit_suffix)
|
|
pub fn bytes(bytes: f64) -> (f64, &'static str) {
|
|
if bytes >= GIB {
|
|
(bytes / GIB, "GiB")
|
|
} else if bytes >= MIB {
|
|
(bytes / MIB, "MiB")
|
|
} else if bytes >= KIB {
|
|
(bytes / KIB, "KiB")
|
|
} else {
|
|
(bytes, "bytes")
|
|
}
|
|
}
|
|
|
|
/// Returns (scaled_value, divisor, axis_label)
|
|
pub fn time(seconds: f64) -> (f64, f64, &'static str) {
|
|
if seconds >= HOUR * 2.0 {
|
|
(seconds / HOUR, HOUR, "Time (h)")
|
|
} else if seconds >= MINUTE * 2.0 {
|
|
(seconds / MINUTE, MINUTE, "Time (min)")
|
|
} else {
|
|
(seconds, 1.0, "Time (s)")
|
|
}
|
|
}
|
|
|
|
pub fn axis_number(value: f64) -> String {
|
|
if value >= 1000.0 {
|
|
let k = value / 1000.0;
|
|
if k.fract() == 0.0 || k >= 100.0 {
|
|
format!("{:.0}k", k)
|
|
} else if k >= 10.0 {
|
|
format!("{:.1}k", k)
|
|
} else {
|
|
format!("{:.2}k", k)
|
|
}
|
|
} else {
|
|
format!("{:.0}", value)
|
|
}
|
|
}
|