percentileOf

tcmts.cli.traced.percentileOf · #d32h2m5n · term · runs anywhere

The duration at fraction p of the spans where says (of n of them).

import type { DatabaseSync } from "node:sqlite";

export function percentileOf(
  db: DatabaseSync,
  where: string,
  args: (string | number)[],
  n: number,
  p: number,
): number {
  return (
    db
      .prepare(`SELECT dur FROM spans WHERE ${where} ORDER BY dur LIMIT 1 OFFSET ?`)
      .get(...args, Math.min(n - 1, Math.floor(n * p))) as { dur: number }
  ).dur;
}

used by