perf tests

This commit is contained in:
NatureFreshMilk 2019-01-22 13:35:15 +01:00
parent bf841f6ba0
commit 064c5f11ff
4 changed files with 30 additions and 8 deletions

View File

@ -16,6 +16,7 @@ func GetTileCoordsFromMapBlock(mbc MapBlockCoords, layers []layer.Layer) *TileCo
for _, l := range layers { for _, l := range layers {
if (mbc.Y*16) >= l.From && (mbc.Y*16) <= l.To { if (mbc.Y*16) >= l.From && (mbc.Y*16) <= l.To {
layerid = &l.Id layerid = &l.Id
break
} }
} }

View File

@ -18,6 +18,15 @@ func NewTileCoords(x, y, zoom int, layerId int) *TileCoords {
return &TileCoords{X: x, Y: y, Zoom: zoom, LayerId: layerId} return &TileCoords{X: x, Y: y, Zoom: zoom, LayerId: layerId}
} }
func (tc *TileCoords) ZoomOut(n int) *TileCoords {
var nc *TileCoords = tc
for i := 1; i<n; i++ {
nc = nc.GetZoomedOutTile()
}
return nc
}
func (tc *TileCoords) GetZoomedOutTile() *TileCoords { func (tc *TileCoords) GetZoomedOutTile() *TileCoords {
return &TileCoords{ return &TileCoords{
X: int(math.Floor(float64(tc.X) / 2.0)), X: int(math.Floor(float64(tc.X) / 2.0)),

View File

@ -4,10 +4,15 @@ import (
"mapserver/app" "mapserver/app"
"mapserver/coords" "mapserver/coords"
"time" "time"
"strconv"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
) )
func getTileKey(tc *coords.TileCoords) string {
return strconv.Itoa(tc.X) + "/" + strconv.Itoa(tc.Y) + "/" + strconv.Itoa(tc.Zoom)
}
func Job(ctx *app.App) { func Job(ctx *app.App) {
fields := logrus.Fields{} fields := logrus.Fields{}
@ -59,17 +64,23 @@ func Job(ctx *app.App) {
} }
} }
//Render zoom 11-1 tileRenderedMap := make(map[string]bool)
for i := 11; i<=1; i-- {
for _, mb := range mblist { for _, mb := range mblist {
//13 //13
tc := coords.GetTileCoordsFromMapBlock(mb.Pos, ctx.Config.Layers) tc := coords.GetTileCoordsFromMapBlock(mb.Pos, ctx.Config.Layers)
//12
tc = tc.GetZoomedOutTile()
for tc.Zoom > 1 {
//11-1 //11-1
tc = tc.GetZoomedOutTile() tc = tc.ZoomOut(13 - i)
key := getTileKey(tc)
if tileRenderedMap[key] {
continue
}
tileRenderedMap[key] = true
fields = logrus.Fields{ fields = logrus.Fields{
"X": tc.X, "X": tc.X,

View File

@ -235,6 +235,7 @@ func (tr *TileRenderer) RenderImage(tc *coords.TileCoords, recursionDepth int) (
"Y": tc.Y, "Y": tc.Y,
"Zoom": tc.Zoom, "Zoom": tc.Zoom,
"LayerId": tc.LayerId, "LayerId": tc.LayerId,
"size": len(tile.Data),
"quadrender": quadrender, "quadrender": quadrender,
"quadresize": quadresize, "quadresize": quadresize,
"encode": encode, "encode": encode,