fastHumanizeSiRateBitsPerSecond function
Ultra-fast formatter for simple SI bits-per-time use-cases. Units: b/s, Kb/s, Mb/s, Gb/s, Tb/s.
Implementation
String fastHumanizeSiRateBitsPerSecond(double bitsPerSecond,
{int precision = 2, String per = 's'}) {
double perSeconds;
switch (per) {
case 'ms':
perSeconds = 1e-3;
break;
case 'min':
perSeconds = 60.0;
break;
case 'h':
perSeconds = 3600.0;
break;
default:
perSeconds = 1.0;
break;
}
final value = bitsPerSecond * perSeconds;
const tb = 1e12;
const gb = 1e9;
const mb = 1e6;
const kb = 1e3;
String sym;
double base;
if (value >= tb) {
base = tb;
sym = 'Tb';
} else if (value >= gb) {
base = gb;
sym = 'Gb';
} else if (value >= mb) {
base = mb;
sym = 'Mb';
} else if (value >= kb) {
base = kb;
sym = 'Kb';
} else {
base = 1.0;
sym = 'b';
}
final v = value / base;
final s = _toFixedTrim(v, precision);
return '$s $sym/$per';
}