Files
fn_registry/functions/datascience/duration_stats.md
T
egutierrez 03568c88e3 chore: auto-commit (57 archivos)
- frontend/functions/core/format_datetime_short.md
- frontend/functions/core/format_datetime_short.test.ts
- frontend/functions/core/format_datetime_short.ts
- frontend/functions/core/format_duration.md
- frontend/functions/core/format_duration.test.ts
- frontend/functions/core/format_duration.ts
- frontend/functions/core/month_grid.md
- frontend/functions/core/month_grid.test.ts
- frontend/functions/core/month_grid.ts
- frontend/functions/core/string_hash_palette.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 03:41:58 +02:00

56 lines
1.8 KiB
Markdown

---
name: duration_stats
kind: function
lang: go
domain: datascience
version: "1.0.0"
purity: pure
signature: "func DurationStatsFrom(durations []int64) DurationStats"
description: "Calcula estadisticas descriptivas (N, media, P50/P90/P99) de un slice de duraciones en milisegundos. Ordena una copia local sin mutar el input. Retorna DurationStats{} para slice vacio."
tags: [statistics, duration, percentile, metrics, int64]
uses_functions:
- percentile_int64_go_datascience
uses_types:
- DurationStats_go_datascience
returns:
- DurationStats_go_datascience
returns_optional: false
error_type: ""
imports:
- sort
params:
- name: durations
desc: "Slice de duraciones en milisegundos. No necesita estar ordenado; se ordena internamente sobre una copia."
output: "DurationStats con N, AvgMs, P50Ms, P90Ms y P99Ms calculados. DurationStats{} si el slice esta vacio."
tested: true
tests:
- "slice vacio retorna estadisticas cero"
- "un solo elemento produce estadisticas identicas"
- "cinco elementos calcula media y percentiles correctos"
- "input original no se muta"
- "diez elementos p90 usa idx truncado"
test_file_path: "functions/datascience/duration_stats_test.go"
file_path: "functions/datascience/duration_stats.go"
source_repo: "https://github.com/egutierrez/fn_registry/apps/kanban"
source_license: "private"
source_file: "apps/kanban/backend/metrics.go"
---
## Ejemplo
```go
durations := []int64{50, 10, 30, 40, 20}
stats := DurationStatsFrom(durations)
// stats.N = 5
// stats.AvgMs = 30
// stats.P50Ms = 30
// stats.P90Ms = 50
// stats.P99Ms = 50
```
## Notas
Ordena una copia con `sort.Slice` para no mutar el slice original.
Compone `Percentile` (`percentile_int64_go_datascience`) para los calculos de P50/P90/P99.
Extraido y generalizado desde `apps/kanban/backend/metrics.go:113-130`.