cmd/simplevnc/main.go (53 lines of code) (raw):
package main
import (
"log"
"os"
"runtime/pprof"
"time"
"github.com/openai/go-vncdriver/gymvnc"
)
import _ "net/http/pprof"
type foo struct {
bar string
}
func main() {
f, err := os.Create("/tmp/profile-tight.pprof")
if err != nil {
panic(err)
}
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
gymvnc.ConfigureLogging()
batch := gymvnc.NewVNCBatch()
err = batch.Open("conn", gymvnc.VNCSessionConfig{
// Address: "127.0.0.1:5900",
Address: "3.public-devbox.sci.openai-tech.com:20000",
Password: "openai",
Encoding: "tight",
FineQualityLevel: 100,
})
if err != nil {
panic(err)
}
start := time.Now()
updates := 0
errs := 0
for i := 0; i < 200000; i++ {
elapsed := time.Now().Sub(start)
if elapsed >= time.Duration(1)*time.Second {
delta := float64(elapsed / time.Second)
log.Printf("Received: updates=%.2f errs=%.2f", float64(updates)/delta, float64(errs)/delta)
start = time.Now()
updates = 0
errs = 0
}
batchEvents := map[string][]gymvnc.VNCEvent{
"conn": []gymvnc.VNCEvent{},
}
_, updatesN, errN := batch.Step(batchEvents)
if errN["conn"] != nil {
log.Fatalf("error: %+v", errN["conn"])
}
updates += len(updatesN["conn"])
time.Sleep(16 * time.Millisecond)
}
// f, err := os.Create("/tmp/hi.prof")
// if err != nil {
// log.Fatal("could not create memory profile: ", err)
// }
// runtime.GC() // get up-to-date statistics
// if err := pprof.WriteHeapProfile(f); err != nil {
// log.Fatal("could not write memory profile: ", err)
// }
// f.Close()
}