goparsify/json/profile/json.go
2017-08-06 23:32:10 +10:00

58 lines
922 B
Go

package main
import (
"flag"
"log"
"os"
"runtime"
"runtime/pprof"
"github.com/vektah/goparsify/json"
)
var cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file")
var memprofile = flag.String("memprofile", "", "write memory profile to this file")
func main() {
flag.Parse()
if *cpuprofile != "" {
f, err := os.Create(*cpuprofile)
if err != nil {
log.Fatal(err)
}
pprof.StartCPUProfile(f)
defer func() {
pprof.StopCPUProfile()
err := f.Close()
if err != nil {
panic(err)
}
}()
}
max := 1000000
if *memprofile != "" {
runtime.MemProfileRate = 1
max = 10000
}
for i := 0; i < max; i++ {
_, err := json.Unmarshal(`{"true":true, "false":false, "null": null}`)
if err != nil {
panic(err)
}
}
if *memprofile != "" {
f, err := os.Create(*memprofile)
if err != nil {
log.Fatal(err)
}
pprof.WriteHeapProfile(f)
f.Close()
return
}
}