fastHumanizeSiRateBitsPerSecond function

String fastHumanizeSiRateBitsPerSecond(
  1. double bitsPerSecond, {
  2. int precision = 2,
  3. String per = 's',
})

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';
}