Go使用笔记

Test

go test -v -run=[pattern]

Benchmark

go test -v -run=bench -bench=[pattern] -cpu=[n] -benchtime=[t]

Analysis

race:
    go test -v -run=[pattern] -race

cpu:
    go test -v -run=bench -bench=[pattern] -cpu=[n] -benchtime=[t] -cpuprofile=[output]

mem:
    go test -v -run=bench -bench=[pattern] -cpu=[n] -benchtime=[t] -memprofile=[output]

block:
    go test -v -run=bench -bench=[pattern] -cpu=[n] -benchtime=[t] -blockprofile=[output]

    go tool pprof [program].test [output]

GODEBUG

runtime提供了环境变量来控制程序。GODEBUG是其中一,它能够设置不少值,格式`name=value,name=val`,如开启gctrace:`$ GODEBUG='gctrace=1' your_program`,会在标准错误输出gc信息。

JSON

ffjson:https://github.com/pquerna/ffjson
用它替换标准库后,编解码效率提升2倍。
对于一些须要编码的大对象,能够采用sync.Pool缓存必定大小的bytes.Buffer,而后直接写buffer来完成json编码,性能有必定提升,
在我笔记本上测10*1024的字符串数组,大概比标准json快20%,结果受到分配buffer大小的影响。
在对json对象编码的时候,若是有字符串字段,而且字符串可能出现json格式用到的字符,最好预先对字符串编码,不然json编码的时候处理字符串转义会致使性能降低,若是字符串很长,可能会成为瓶颈。
相关文章
相关标签/搜索