Made size of hashes LRU cache a parameter set by the webmapper.

This commit is contained in:
Sascha L. Teichmann 2016-05-10 21:02:16 +02:00
parent 7cbe2e516c
commit bae7e7c3e6
3 changed files with 12 additions and 9 deletions

View File

@ -24,6 +24,9 @@ import (
"bitbucket.org/s_l_teichmann/mtsatellite/common"
)
// Number of check sums to keep in memory.
const maxHashedTiles = 256
type baseTilesUpdates interface {
BaseTilesUpdated([]xz)
}
@ -177,7 +180,7 @@ func activeChanges(changes []xzc) []xz {
func (tu *tileUpdater) doUpdates() {
bth := common.NewBaseTileHash()
bth := common.NewBaseTileHash(maxHashedTiles)
baseDir := filepath.Join(tu.mapDir, "8")

View File

@ -9,8 +9,6 @@ import (
"sync"
)
const btMaxEntries = 256
type btKey struct {
x int
y int
@ -25,13 +23,15 @@ type btHashEntry struct {
type BaseTileHash struct {
hashes map[btKey]*btHashEntry
maxEntries int
root btHashEntry
sync.Mutex
}
func NewBaseTileHash() *BaseTileHash {
func NewBaseTileHash(maxEntries int) *BaseTileHash {
bth := &BaseTileHash{
hashes: map[btKey]*btHashEntry{}}
hashes: map[btKey]*btHashEntry{},
maxEntries: maxEntries}
bth.root.next = &bth.root
bth.root.prev = &bth.root
return bth
@ -76,7 +76,7 @@ func (bth *BaseTileHash) Update(x, y int, hash []byte) bool {
return false
}
var entry *btHashEntry
if len(bth.hashes) >= btMaxEntries {
if len(bth.hashes) >= bth.maxEntries {
entry = bth.removeLast()
} else {
entry = new(btHashEntry)

View File

@ -7,7 +7,7 @@ package common
import "testing"
func TestBaseTileHash(t *testing.T) {
bth := NewBaseTileHash()
bth := NewBaseTileHash(256)
h1 := []byte{1}
h2 := []byte{2}
for i := 0; i < 600; i++ {