• 属鱼
    2018-10-08
    第一个问题:
    -benchmem 输出基准测试的内存分配统计信息。
    -benchtime 用于指定基准测试的探索式测试执行时间上限
    示例:
    $ go test -bench=. word
    goos: linux
    goarch: amd64
    pkg: word
    BenchmarkIsPalindrome-4     2000000000     0.00 ns/op
    PASS
    ok     word    0.002s
    $ go test -bench=. -benchmem -benchtime 10s word
    goos: linux
    goarch: amd64
    pkg: word
    BenchmarkIsPalindrome-4     10000000000     0.00 ns/op     0 B/op     0 allocs/op
    PASS
    ok     word    0.003s
    注意输出部分多的那两部分(0 B/op,0 allocs/op)以及执行次数。
    第二个问题:
    使用 -coverprofile=xxxx.out 输出覆盖率的out文件,使用go tool cover -html=xxxx.out 命令转换成Html的覆盖率测试报告。
    覆盖率测试将被测试的代码拷贝一份,在每个语句块中加入bool标识变量,测试结束后统计覆盖率并输出成out文件,因此性能上会有一定的影响。
    PS:使用-covermode=count标识参数将插入的标识变量由bool类型转换为计数器,在测试过程中,记录执行次数,用于找出被频繁执行的代码块,方便优化。
    展开
     1
     32
  • 晒太阳
    2019-09-27
    老师,回到MPG模型,我的理解是多级的关系,但M和P之间是否是一对多的关系,一个M对应着多个P,P对应着多个G(G队列runqueues),只有这样才能做到成千上万的G。我的理解对不对?M和P之间是否是一对多的关系?希望老师解惑,感谢啊。

    作者回复: M 和 P 是多对多的,或者说是动态结合的。一个 P 在不同时刻可能会对接不同的 M,反过来也是如此。而且 M 和 P 在数量上没有直接的关系。P 和 G 表面上说是一对多的,但其实一个 G 在它的生命周期中也可能会在不同 P 的可运行队列之间游走。更详细的东西,可以看我写的那本书。

     2
     1
  • 大王叫我来巡山
    2019-09-12
    慢慢的感觉就跟不上了,主要是还没有遇到这个应用的场景,评论也越来越少,不过老师确实很赞,不管是我提问题,还是吐槽,老师都很耐心的回答,但是我感觉不知道是不是我写的太少了,这个内容距离实践还有段距离

    作者回复: 确实需要多多练习。自己做项目吧。

     1
     1
  • Sky
    2019-07-11
    -cpu=2,4 -count=2
    
     1
  • Charles WANG
    2018-10-09
    Go语言都有哪些框架?我查了一下,貌似只有Web框架?
     1
    
我们在线,来聊聊吧