cache []byte for MarshalDeltaNodes

master
Oliver Tonnhofer 2013-06-03 11:03:45 +02:00
parent f1623d1432
commit 64da1ef0b0
1 changed files with 17 additions and 1 deletions

18
cache/delta.go vendored
View File

@ -209,18 +209,34 @@ func (self *DeltaCoordsCache) PutCoords(nodes []element.Node) error {
return nil
}
var (
freeBuffer = make(chan []byte, 4)
)
func (p *DeltaCoordsCache) putCoordsPacked(bunchId int64, nodes []element.Node) error {
if len(nodes) == 0 {
return nil
}
keyBuf := idToKeyBuf(bunchId)
data := binary.MarshalDeltaNodes(nodes, nil)
var data []byte
select {
case data = <-freeBuffer:
default:
}
data = binary.MarshalDeltaNodes(nodes, data)
err := p.db.Put(p.wo, keyBuf, data)
if err != nil {
return err
}
select {
case freeBuffer <- data:
default:
}
return nil
}