mirror of
https://github.com/bcicen/ctop.git
synced 2025-12-06 23:26:45 +08:00
refactor data hist structs, add Val field
This commit is contained in:
@@ -1,74 +1,60 @@
|
||||
package expanded
|
||||
|
||||
type IntHist struct {
|
||||
data []int
|
||||
labels []string
|
||||
Val int // most current data point
|
||||
Data []int // historical data points
|
||||
Labels []string
|
||||
}
|
||||
|
||||
func NewIntHist(max int) IntHist {
|
||||
return IntHist{
|
||||
data: make([]int, max),
|
||||
labels: make([]string, max),
|
||||
func NewIntHist(max int) *IntHist {
|
||||
return &IntHist{
|
||||
Data: make([]int, max),
|
||||
Labels: make([]string, max),
|
||||
}
|
||||
}
|
||||
|
||||
func (h IntHist) Append(val int) {
|
||||
if len(h.data) == cap(h.data) {
|
||||
h.data = append(h.data[:0], h.data[1:]...)
|
||||
func (h *IntHist) Append(val int) {
|
||||
if len(h.Data) == cap(h.Data) {
|
||||
h.Data = append(h.Data[:0], h.Data[1:]...)
|
||||
}
|
||||
h.Val = val
|
||||
h.Data = append(h.Data, val)
|
||||
}
|
||||
|
||||
h.data = append(h.data, val)
|
||||
type DiffHist struct {
|
||||
*IntHist
|
||||
lastVal int
|
||||
}
|
||||
|
||||
func NewDiffHist(max int) *DiffHist {
|
||||
return &DiffHist{NewIntHist(max), -1}
|
||||
}
|
||||
|
||||
func (h *DiffHist) Append(val int) {
|
||||
if h.lastVal >= 0 { // skip append if this is the initial update
|
||||
diff := val - h.lastVal
|
||||
h.IntHist.Append(diff)
|
||||
}
|
||||
h.lastVal = val
|
||||
}
|
||||
|
||||
type FloatHist struct {
|
||||
data []float64
|
||||
labels []string
|
||||
Val float64 // most current data point
|
||||
Data []float64 // historical data points
|
||||
Labels []string
|
||||
}
|
||||
|
||||
func NewFloatHist(max int) FloatHist {
|
||||
return FloatHist{
|
||||
data: make([]float64, max),
|
||||
labels: make([]string, max),
|
||||
Data: make([]float64, max),
|
||||
Labels: make([]string, max),
|
||||
}
|
||||
}
|
||||
|
||||
func (h FloatHist) Append(val float64) {
|
||||
if len(h.data) == cap(h.data) {
|
||||
h.data = append(h.data[:0], h.data[1:]...)
|
||||
if len(h.Data) == cap(h.Data) {
|
||||
h.Data = append(h.Data[:0], h.Data[1:]...)
|
||||
}
|
||||
h.data = append(h.data, val)
|
||||
}
|
||||
|
||||
type DiffHist struct {
|
||||
data []int // data point derivatives
|
||||
srcData []int // principal input data
|
||||
labels []string
|
||||
}
|
||||
|
||||
func NewDiffHist(max int) DiffHist {
|
||||
return DiffHist{
|
||||
data: make([]int, max),
|
||||
srcData: make([]int, max),
|
||||
labels: make([]string, max),
|
||||
}
|
||||
}
|
||||
|
||||
// return most recent value
|
||||
func (h DiffHist) Last() int {
|
||||
return h.data[len(h.data)-1]
|
||||
}
|
||||
|
||||
func (h DiffHist) Append(val int) {
|
||||
if len(h.data) == cap(h.data) {
|
||||
h.data = append(h.data[:0], h.data[1:]...)
|
||||
}
|
||||
if len(h.srcData) == cap(h.srcData) {
|
||||
h.srcData = append(h.srcData[:0], h.srcData[1:]...)
|
||||
}
|
||||
|
||||
diff := val - h.srcData[len(h.srcData)-1]
|
||||
if diff != val { // skip adding to data if this is the initial update
|
||||
h.data = append(h.data, diff)
|
||||
}
|
||||
h.srcData = append(h.srcData, val)
|
||||
h.Val = val
|
||||
h.Data = append(h.Data, val)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user