mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-08-31 10:04:01 +03:00
Add PGO
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
# git config merge.theirs.name "Always accept theirs"
|
||||||
|
# git config merge.theirs.driver "cp %B %A"
|
||||||
|
default.pgo binary merge=theirs
|
||||||
BIN
Binary file not shown.
@@ -14,6 +14,23 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
// this runs profiling server. To enable it, build with prof tag
|
||||||
|
// $ go build -tags prof
|
||||||
|
//
|
||||||
|
// Then you can pass a port using MTG_PROF_PORT environment variable.
|
||||||
|
// Default is 6000
|
||||||
|
// $ MTG_PROF_PORT=6000 mtg run config.toml
|
||||||
|
//
|
||||||
|
// It will run a webserver with profiling data on
|
||||||
|
// localhost:${MTG_PROF_PORT:-6000}.
|
||||||
|
//
|
||||||
|
// To collect PGO do following:
|
||||||
|
// $ curl -o default.pgo 'http://localhost:6000/debug/pprof/profile?seconds=300'
|
||||||
|
//
|
||||||
|
// See also https://pkg.go.dev/net/http/pprof
|
||||||
|
// https://go.dev/blog/pprof
|
||||||
|
runProfile()
|
||||||
|
|
||||||
cli := &cli.CLI{}
|
cli := &cli.CLI{}
|
||||||
ctx := kong.Parse(cli, kong.Vars{
|
ctx := kong.Parse(cli, kong.Vars{
|
||||||
"version": getVersion(),
|
"version": getVersion(),
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
//go:build !prof
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
func runProfile() {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//go:build prof
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net"
|
||||||
|
"net/http"
|
||||||
|
_ "net/http/pprof" //nolint: gosec
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
const DefaultProfPort = "6000"
|
||||||
|
|
||||||
|
func runProfile() {
|
||||||
|
port := os.Getenv("MTG_PROF_PORT")
|
||||||
|
if port == "" {
|
||||||
|
port = DefaultProfPort
|
||||||
|
}
|
||||||
|
|
||||||
|
listener, err := net.Listen("tcp", net.JoinHostPort("127.0.0.1", port))
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
go http.Serve(listener, nil)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user