Speed up latest entry lookup by using the cache if it's not empty
This commit is contained in:
parent
88136304e4
commit
c38fbc474c
|
@ -12,6 +12,20 @@ type DataCache struct {
|
||||||
start int
|
start int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dc *DataCache) LatestTime() int64 {
|
||||||
|
dc.Lock()
|
||||||
|
defer dc.Unlock()
|
||||||
|
|
||||||
|
if len(dc.data) == 0 {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
if dc.start == 0 {
|
||||||
|
return int64(dc.data[len(dc.data)-1].Time)
|
||||||
|
} else {
|
||||||
|
return int64(dc.data[dc.start-1].Time)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (dc *DataCache) Add(data *Datapoint) {
|
func (dc *DataCache) Add(data *Datapoint) {
|
||||||
dc.Lock()
|
dc.Lock()
|
||||||
defer dc.Unlock()
|
defer dc.Unlock()
|
||||||
|
|
|
@ -106,6 +106,19 @@ func main() {
|
||||||
dumpSecond := dumpData(db, &state.Cache, 1000)
|
dumpSecond := dumpData(db, &state.Cache, 1000)
|
||||||
|
|
||||||
lastPoint := func(w http.ResponseWriter, _req *http.Request) {
|
lastPoint := func(w http.ResponseWriter, _req *http.Request) {
|
||||||
|
var err error
|
||||||
|
time := state.Cache.LatestTime()
|
||||||
|
if time > 0 {
|
||||||
|
msg, err := json.Marshal(time)
|
||||||
|
if err != nil {
|
||||||
|
w.WriteHeader(500)
|
||||||
|
w.Write([]byte(err.Error()))
|
||||||
|
} else {
|
||||||
|
w.Write(msg)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
msg, err := s.LastTime(db)
|
msg, err := s.LastTime(db)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
w.WriteHeader(500)
|
w.WriteHeader(500)
|
||||||
|
|
Loading…
Reference in New Issue