1
0
forked from MTSR/mapserver

perf timing

This commit is contained in:
NatureFreshMilk 2019-01-22 13:17:30 +01:00
parent 607c4fe06d
commit bf841f6ba0
5 changed files with 40 additions and 15 deletions

View File

@ -27,7 +27,7 @@ func getKey(pos coords.MapBlockCoords) string {
} }
func NewMapBlockAccessor(accessor db.DBAccessor) *MapBlockAccessor { func NewMapBlockAccessor(accessor db.DBAccessor) *MapBlockAccessor {
c := cache.New(100*time.Millisecond, 200*time.Millisecond) c := cache.New(500*time.Millisecond, 1000*time.Millisecond)
return &MapBlockAccessor{accessor: accessor, c: c} return &MapBlockAccessor{accessor: accessor, c: c}
} }
@ -60,6 +60,7 @@ func (a *MapBlockAccessor) FindLegacyMapBlocks(lastpos coords.MapBlockCoords, li
for _, l := range layerfilter { for _, l := range layerfilter {
if (block.Pos.Y*16) >= l.From && (block.Pos.Y*16) <= l.To { if (block.Pos.Y*16) >= l.From && (block.Pos.Y*16) <= l.To {
inLayer = true inLayer = true
break
} }
} }

View File

@ -41,11 +41,11 @@ func (mb *MapBlock) GetNodeName(x, y, z int) string {
return mb.BlockMapping[id] return mb.BlockMapping[id]
} }
func NewMapblock() MapBlock { func NewMapblock() *MapBlock {
mb := MapBlock{} mb := MapBlock{}
mb.Metadata = NewMetadata() mb.Metadata = NewMetadata()
mb.BlockMapping = make(map[int]string) mb.BlockMapping = make(map[int]string)
return mb return &mb
} }
func NewMetadata() *Metadata { func NewMetadata() *Metadata {

View File

@ -40,14 +40,14 @@ func Parse(data []byte, mtime int64, pos coords.MapBlockCoords) (*MapBlock, erro
offset = 6 offset = 6
//metadata //metadata
count, err := parseMapdata(&mapblock, data[offset:]) count, err := parseMapdata(mapblock, data[offset:])
if err != nil { if err != nil {
return nil, err return nil, err
} }
offset += count offset += count
count, err = parseMetadata(&mapblock, data[offset:]) count, err = parseMetadata(mapblock, data[offset:])
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -86,5 +86,5 @@ func Parse(data []byte, mtime int64, pos coords.MapBlockCoords) (*MapBlock, erro
mapblock.BlockMapping[nodeId] = blockName mapblock.BlockMapping[nodeId] = blockName
} }
return &mapblock, nil return mapblock, nil
} }

View File

@ -156,30 +156,32 @@ func (tr *TileRenderer) RenderImage(tc *coords.TileCoords, recursionDepth int) (
} }
log.WithFields(fields).Debug("Quad image stats") log.WithFields(fields).Debug("Quad image stats")
start := time.Now()
upperLeft, _, err := tr.RenderImage(quads.UpperLeft, recursionDepth-1) upperLeft, _, err := tr.RenderImage(quads.UpperLeft, recursionDepth-1)
if err != nil { if err != nil {
panic(err) return nil, nil, err
//return nil, err
} }
upperRight, _, err := tr.RenderImage(quads.UpperRight, recursionDepth-1) upperRight, _, err := tr.RenderImage(quads.UpperRight, recursionDepth-1)
if err != nil { if err != nil {
panic(err) return nil, nil, err
//return nil, err
} }
lowerLeft, _, err := tr.RenderImage(quads.LowerLeft, recursionDepth-1) lowerLeft, _, err := tr.RenderImage(quads.LowerLeft, recursionDepth-1)
if err != nil { if err != nil {
panic(err) return nil, nil, err
//return nil, err
} }
lowerRight, _, err := tr.RenderImage(quads.LowerRight, recursionDepth-1) lowerRight, _, err := tr.RenderImage(quads.LowerRight, recursionDepth-1)
if err != nil { if err != nil {
panic(err) return nil, nil, err
//return nil, err
} }
t := time.Now()
quadrender := t.Sub(start)
start = t
img := image.NewNRGBA( img := image.NewNRGBA(
image.Rectangle{ image.Rectangle{
image.Point{0, 0}, image.Point{0, 0},
@ -211,11 +213,34 @@ func (tr *TileRenderer) RenderImage(tc *coords.TileCoords, recursionDepth int) (
draw.Draw(img, rect, resizedImg, image.ZP, draw.Src) draw.Draw(img, rect, resizedImg, image.ZP, draw.Src)
} }
t = time.Now()
quadresize := t.Sub(start)
start = t
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
png.Encode(buf, img) png.Encode(buf, img)
t = time.Now()
encode := t.Sub(start)
start = t
tile := mapobjectdb.Tile{Pos: tc, Data: buf.Bytes(), Mtime: time.Now().Unix()} tile := mapobjectdb.Tile{Pos: tc, Data: buf.Bytes(), Mtime: time.Now().Unix()}
tr.tdb.SetTile(&tile) tr.tdb.SetTile(&tile)
t = time.Now()
cache := t.Sub(start)
fields = logrus.Fields{
"X": tc.X,
"Y": tc.Y,
"Zoom": tc.Zoom,
"LayerId": tc.LayerId,
"quadrender": quadrender,
"quadresize": quadresize,
"encode": encode,
"cache": cache,
}
log.WithFields(fields).Debug("Cross stitch")
return img, buf.Bytes(), nil return img, buf.Bytes(), nil
} }

View File

@ -95,5 +95,4 @@ func TestTileRender(t *testing.T) {
f, _ = os.Create("../output/0_0_13.png") f, _ = os.Create("../output/0_0_13.png")
bytes.NewReader(data).WriteTo(f) bytes.NewReader(data).WriteTo(f)
} }