stats.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package kubemodel
  2. // @bingen:generate:StatType
  3. type StatType string
  4. const (
  5. StatAvg StatType = "avg"
  6. StatMax StatType = "max"
  7. StatMin StatType = "min"
  8. StatP95 StatType = "p95"
  9. StatP85 StatType = "p85"
  10. )
  11. // @bingen:generate:Stats
  12. type Stats map[StatType]float64
  13. func NewStats(capacity ...int) Stats {
  14. if len(capacity) == 1 {
  15. s := make(map[StatType]float64, capacity[0])
  16. return s
  17. }
  18. return map[StatType]float64{}
  19. }
  20. func (s Stats) Avg() (float64, bool) {
  21. if s == nil {
  22. return 0, false
  23. }
  24. val, ok := s[StatAvg]
  25. return val, ok
  26. }
  27. func (s Stats) Max() (float64, bool) {
  28. if s == nil {
  29. return 0, false
  30. }
  31. val, ok := s[StatMax]
  32. return val, ok
  33. }
  34. func (s Stats) Min() (float64, bool) {
  35. if s == nil {
  36. return 0, false
  37. }
  38. val, ok := s[StatMin]
  39. return val, ok
  40. }
  41. func (s Stats) P95() (float64, bool) {
  42. if s == nil {
  43. return 0, false
  44. }
  45. val, ok := s[StatP95]
  46. return val, ok
  47. }
  48. func (s Stats) P85() (float64, bool) {
  49. if s == nil {
  50. return 0, false
  51. }
  52. val, ok := s[StatP85]
  53. return val, ok
  54. }