Skip to content

Go test bench

jaeseok.an edited this page May 17, 2019 · 1 revision

benchmark

go test -bench=Fib40 -benchtime=20s

spec 관련

Empty interface{}  빈 interface. 임의의 type을 받을 때 사용 (void *type 같은 개념. 다른 언어의 dynamic type에 해당)

Interface Type assertion

func main() { var a interface{} = 1

i := a       // a와 i 는 dynamic type, 값은 1
j := a.(int) // j는 int 타입, 값은 1

println(i)  // 포인터주소 출력
println(j)  // 1 출력

}

interface type x에 대해 x.(T) 라고 할 경우 x가 type T이면 T type인 x를 리턴하고 nil 이거나 T type이 아니면 runtime error 가 발생

interface의 구현 여부 체크

type Duck struct {
  a int
}
func (d Duck)quack() {
	fmt.Println("called quack()")
}

type Quacker interface { quack() }

func main() { var donald Duck

if v, ok := interface{}(donald).(Quacker); ok {
	fmt.Println(v, ok)
	v.quack()
} else {
	fmt.Println("false")
}

}

channel

수신, 송신 only type으로 사용가능 

수신 : x  <-chan  int 송신 : y chan→ int

Pprof

pprof는 특정 timerange를 설정하거나, server의 현재 상태를 볼수 있다. 특정 range는 pprof.Start/Stop()을 수행해야 한다. svg 이미지 형태로 pprof 보기 결과는 브라우져로 image를 열어 볼수 있다.

go tool pprof -timeout=600 -sample_index=inuse_space --output=./dump01.svg http://192.168.0.248:10101/debug/pprof/heap\?debug\=1
open ./dump01.svg

test

Clone this wiki locally