diff options
| author | Paul Buetow <paul@buetow.org> | 2026-02-24 21:39:08 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-02-24 21:39:08 +0200 |
| commit | 84d523fd02cba38cfe90118975f345b989beaae1 (patch) | |
| tree | 5798395f193c0311983df48fcd10e1bf1e411d00 /internal/statsengine/snapshot.go | |
| parent | a5eb463095631bcd8abd087c5e380f7a79104268 (diff) | |
statsengine: deduplicate topN helpers with generics
Diffstat (limited to 'internal/statsengine/snapshot.go')
| -rw-r--r-- | internal/statsengine/snapshot.go | 28 |
1 files changed, 4 insertions, 24 deletions
diff --git a/internal/statsengine/snapshot.go b/internal/statsengine/snapshot.go index 1cc2118..8c9656e 100644 --- a/internal/statsengine/snapshot.go +++ b/internal/statsengine/snapshot.go @@ -186,7 +186,7 @@ func (s Snapshot) SyscallsCount() int { // TopNSyscalls returns at most n per-syscall rows in ranking order. // Callers must treat returned data as read-only. func (s Snapshot) TopNSyscalls(n int) []SyscallSnapshot { - return topNSyscalls(s.syscalls, n) + return topN(s.syscalls, n) } // Files returns per-file snapshot rows. @@ -203,7 +203,7 @@ func (s Snapshot) FilesCount() int { // TopNFiles returns at most n file rows in ranking order. // Callers must treat returned data as read-only. func (s Snapshot) TopNFiles(n int) []FileSnapshot { - return topNFiles(s.files, n) + return topN(s.files, n) } // Processes returns per-process snapshot rows. @@ -220,7 +220,7 @@ func (s Snapshot) ProcessesCount() int { // TopNProcesses returns at most n process rows in ranking order. // Callers must treat returned data as read-only. func (s Snapshot) TopNProcesses(n int) []ProcessSnapshot { - return topNProcesses(s.processes, n) + return topN(s.processes, n) } // Buckets returns histogram buckets. @@ -229,27 +229,7 @@ func (h HistogramSnapshot) Buckets() []HistogramBucketSnapshot { return h.buckets } -func topNSyscalls(rows []SyscallSnapshot, n int) []SyscallSnapshot { - if n <= 0 || len(rows) == 0 { - return nil - } - if n > len(rows) { - n = len(rows) - } - return rows[:n:n] -} - -func topNFiles(rows []FileSnapshot, n int) []FileSnapshot { - if n <= 0 || len(rows) == 0 { - return nil - } - if n > len(rows) { - n = len(rows) - } - return rows[:n:n] -} - -func topNProcesses(rows []ProcessSnapshot, n int) []ProcessSnapshot { +func topN[T any](rows []T, n int) []T { if n <= 0 || len(rows) == 0 { return nil } |
