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函数执行能在一定时间内达到稳态,否则永远执行不完,没有结果

  • 相关阅读:
    性能测试——Jmeter基本用法概述
    Postman-newman基础用法
    数据库基础总结
    性能测试概述
    pytest+allure生成测试报告
    CSS入门基础
    HTML基础知识总结
    robotframework:无法导入资源Not a valid file or directory to import
    robotframework及官方编辑器RIDE的安装与配置
    常用排序算法
  • 原文地址:https://www.cnblogs.com/saryli/p/11345569.html
Copyright © 2011-2022 走看看