Merge pull request #1575 from influxdb/batch-std-dev

emit in batches of 1000
pull/1583/head
Cory LaNou 2015-02-11 18:19:39 -07:00
commit 59a953db97
1 changed files with 10 additions and 0 deletions

View File

@ -10,6 +10,9 @@ import (
"time" "time"
) )
// how many values we will map before emitting
const emitBatchSize = 1000
// DB represents an interface for creating transactions. // DB represents an interface for creating transactions.
type DB interface { type DB interface {
Begin() (Tx, error) Begin() (Tx, error)
@ -756,6 +759,13 @@ func MapStddev(itr Iterator, e *Emitter, tmax int64) {
for k, v := itr.Next(); k != 0; k, v = itr.Next() { for k, v := itr.Next(); k != 0; k, v = itr.Next() {
values = append(values, v.(float64)) values = append(values, v.(float64))
// Emit in batches.
// unbounded emission of data can lead to excessive memory use
// or other potential performance problems.
if len(values) == emitBatchSize {
e.Emit(Key{tmax, itr.Tags()}, values)
values = []float64{}
}
} }
if len(values) > 0 { if len(values) > 0 {
e.Emit(Key{tmax, itr.Tags()}, values) e.Emit(Key{tmax, itr.Tags()}, values)