zoukankan      html  css  js  c++  java
  • go 学习笔记(3)benchmark

    benchmark函数以benchmark开头

    benchmark的case一般会跑b.N次,且每次执行都如此

    在执行过程中会根据实际case的执行时间是否稳定会增加b.N的次数以达到稳态。

    package main
    
    import (
    	"fmt"
    	"testing"
    )
    
    func TestPrint(t *testing.T) {
    	res := Print1to20()
    	fmt.Println("hey")
    	if res != 210 {
    		t.Errorf("wrong result of Print1to20")
    	}
    }
    
    func TestPrint1(t *testing.T) {
    	res := Print1to20()
    	res++
    	if res != 211 {
    		t.Errorf("wrong result of Print1to20")
    	}
    }
    
    func TestMain(m *testing.M) {
    	fmt.Println("starting...")
    	m.Run()
    }
    
    func BenchmarkAll(b *testing.B) {
    	for n := 0; n < b.N; n++ {
    		Print1to20()
    	}
    }
    

      执行命令:

    go test -bench=.
    

      

    BenchmarkAll执行了200000000,每次执行耗时8.29ns

    Benchmark函数首字母必须大写

    Benchmark函数也是普通的test case之一,受TestMain限制

    go test -benchmark -----只跑benchmark case

    package main
    
    import (
    	"fmt"
    	"testing"
    )
    
    func TestPrint(t *testing.T) {
    	res := Print1to20()
    	fmt.Println("hey")
    	if res != 210 {
    		t.Errorf("wrong result of Print1to20")
    	}
    }
    
    func TestPrint1(t *testing.T) {
    	res := Print1to20()
    	res++
    	if res != 211 {
    		t.Errorf("wrong result of Print1to20")
    	}
    }
    
    func aaa(n int) int {
    	return n
    }
    
    func TestMain(m *testing.M) {
    	fmt.Println("starting...")
    	m.Run()
    }
    
    func BenchmarkAll(b *testing.B) {
    	for n := 0; n < b.N; n++ {
    		aaa(n)
    	}
    }
    

      要注意benchmark函数执行能在一定时间内达到稳态,否则永远执行不完,没有结果

  • 相关阅读:
    XML转义符简易版
    MarkDown语法
    判断javaScript变量是Ojbect类型还是Array类型
    Springboot实现VNC的反向代理
    MySql事务隔离的特点与实现
    MySql索引入门
    windows、Linux 批量执行 redis脚本命令
    iis 灰度发布
    iis 负载
    docker中部署.netcore2.2项目
  • 原文地址:https://www.cnblogs.com/saryli/p/11345569.html
Copyright © 2011-2022 走看看