zoukankan      html  css  js  c++  java
  • golang 性能测试

    格式:

    func BenchmarkXxx(b *testing.B)

    简单代码:

     
    package examples
    
    import (
        "io/ioutil"
        "net/http"
        "testing"
    )
    // 测试并发效率
    func BenchmarkLoopsParallel(b *testing.B) {
        b.RunParallel(func(pb *testing.PB) { //并发
            for pb.Next() {
                resp, err := http.Get("http://10.10.200.128:8080/image?t=MDA")
                if err != nil {
                    // handle error
                }
    
                cookies := resp.Cookies()
                verify_key := ""
                for _, v := range cookies {
                    if v.Name == "VERIFY_KEY" {
                        verify_key = v.Value
                    }
                }
    
                if err != nil {
                    // handle error
                }
                defer resp.Body.Close()
                if verify_key == "" {
                    b.Fail()
                }
            }
        })
    }



    运行

    go test -bench="."

    • -parallel 50 设置并发
    • -count n 设置次数

    testing.T

    判定失败接口

    • Fail 失败继续
    • FailNow 失败终止

    打印信息接口

    • Log 数据流 (cout 类似)
    • Logf format (printf 类似)
    • SkipNow 跳过当前测试
    • Skiped 检测是否跳过

    综合接口产生:

    • Error / Errorf 报告出错继续 [ Log / Logf + Fail ]
    • Fatel / Fatelf 报告出错终止 [ Log / Logf + FailNow ]
    • Skip / Skipf 报告并跳过 [ Log / Logf + SkipNow ]

    testing.B

    首先 , testing.B 拥有testing.T 的全部接口。

    • SetBytes( i uint64) 统计内存消耗, 如果你需要的话。
    • SetParallelism(p int) 制定并行数目。
    • StartTimer / StopTimer / ResertTimer 操作计时器

    testing.PB

    • Next() 接口 。 判断是否继续循环

    注意点

    1. 文件需已test.go结尾




  • 相关阅读:
    程序员需要知道的知识
    ajax原理图
    线性表及其操作
    JDBC连接SQL server 2005 全过程
    asp.net生命周期
    终于在博客园里申请了自己的博客
    C#反射类中所有字段,属性,方法
    继续学习NHibernate
    C#中方法的四种参数类型
    Forms权限认证
  • 原文地址:https://www.cnblogs.com/sea520/p/13637654.html
Copyright © 2011-2022 走看看