Allow ebiten.Run execution to be profiled
This commit is contained in:
@@ -3,6 +3,9 @@ package ui
|
|||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"runtime/pprof"
|
||||||
|
|
||||||
"github.com/hajimehoshi/ebiten"
|
"github.com/hajimehoshi/ebiten"
|
||||||
"github.com/hajimehoshi/ebiten/ebitenutil"
|
"github.com/hajimehoshi/ebiten/ebitenutil"
|
||||||
@@ -12,6 +15,8 @@ import (
|
|||||||
var (
|
var (
|
||||||
winX = flag.Int("win-x", 1280, "width of the view-map window")
|
winX = flag.Int("win-x", 1280, "width of the view-map window")
|
||||||
winY = flag.Int("win-y", 1024, "height of the view-map window")
|
winY = flag.Int("win-y", 1024, "height of the view-map window")
|
||||||
|
|
||||||
|
cpuprofile = flag.String("cpuprofile", "", "write cpu profile to `file`")
|
||||||
)
|
)
|
||||||
|
|
||||||
type Window struct {
|
type Window struct {
|
||||||
@@ -91,5 +96,17 @@ func (w *Window) Run(updateFn func() error, drawFn func(*ebiten.Image) error) er
|
|||||||
w.updateFn = updateFn
|
w.updateFn = updateFn
|
||||||
w.drawFn = drawFn
|
w.drawFn = drawFn
|
||||||
|
|
||||||
|
if *cpuprofile != "" {
|
||||||
|
f, err := os.Create(*cpuprofile)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("could not create CPU profile: ", err)
|
||||||
|
}
|
||||||
|
defer f.Close() // error handling omitted for example
|
||||||
|
if err := pprof.StartCPUProfile(f); err != nil {
|
||||||
|
log.Fatal("could not start CPU profile: ", err)
|
||||||
|
}
|
||||||
|
defer pprof.StopCPUProfile()
|
||||||
|
}
|
||||||
|
|
||||||
return ebiten.Run(w.run, *winX, *winY, 1, w.Title)
|
return ebiten.Run(w.run, *winX, *winY, 1, w.Title)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user