diff options
author | Franck Cuny <franck@fcuny.net> | 2022-10-15 12:32:28 -0700 |
---|---|---|
committer | Franck Cuny <franck@fcuny.net> | 2022-10-15 12:32:28 -0700 |
commit | ce39b5fd65a91e241b2edbb9fd6a9a12967a064d (patch) | |
tree | bd0ec3519ac3a41c55193023dc3f3bb2705114a1 /tools/seqstat/sequence.go | |
parent | ci: update the flake once a week (diff) | |
download | world-ce39b5fd65a91e241b2edbb9fd6a9a12967a064d.tar.gz |
ref(seqstat): rewrite from go to python
This is a simple script, there's no benefit in having this in go. Having it Python makes it easier to extend with panda or other libraries in the future if I need more statistics too.
Diffstat (limited to '')
-rw-r--r-- | tools/seqstat/sequence.go | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/tools/seqstat/sequence.go b/tools/seqstat/sequence.go deleted file mode 100644 index d4ec91b..0000000 --- a/tools/seqstat/sequence.go +++ /dev/null @@ -1,79 +0,0 @@ -package main - -import ( - "sort" -) - -var ( - ticks = []rune{'\u2581', '\u2582', '\u2583', '\u2584', '\u2585', '\u2586', '\u2587', '\u2588'} -) - -type sequence struct { - elements []float64 - elementsSorted []float64 - min float64 - max float64 - factor int - sum float64 -} - -func (s *sequence) avg() float64 { - return s.sum / float64(len(s.elements)) -} - -func (s *sequence) p50() float64 { - return s.elementsSorted[len(s.elementsSorted)*50/100] -} - -func (s *sequence) p90() float64 { - return s.elementsSorted[len(s.elementsSorted)*90/100] -} - -func (s *sequence) p99() float64 { - return s.elementsSorted[len(s.elementsSorted)*99/100] -} - -func (s *sequence) p999() float64 { - return s.elementsSorted[len(s.elementsSorted)*999/1000] -} -func (s *sequence) histogram() []rune { - histogram := make([]rune, len(s.elements)) - for i, num := range s.elements { - v := (((int(num) - int(s.min)) << 8) / s.factor) - histogram[i] = ticks[v] - } - return histogram -} - -func newSequence(elements []float64) *sequence { - s := new(sequence) - s.elements = elements - - s.min = s.elements[0] - s.max = s.elements[0] - - s.sum = 0 - - for _, element := range s.elements { - if element > s.max { - s.max = element - } - if element < s.min { - s.min = element - } - s.sum += element - } - - s.factor = ((int(s.max) - int(s.min)) << 8) / (len(ticks) - 1) - - if s.factor < 1 { - s.factor = 1 - } - - elementsSorted := make([]float64, len(elements)) - copy(elementsSorted, elements) - sort.Float64s(elementsSorted) - s.elementsSorted = elementsSorted - - return s -} |