go语言基准测试

基准测试就是在一定的工作负载之下检测程序性能的一种方法。基准测试的基本格式如下:

func BenchmarkName(b *testing.B){
    // ...
} 

测试函数

package split

import "strings"

func Split(s, seq string) (result []string) {
    i := strings.Index(s, seq)
    for i>-1 {
        result = append(result, s[:i])
        s = s[i+len(seq):]
        //s = s[i+1:]
        i = strings.Index(s, seq)
    }
    result = append(result, s)
    return result
}

func SplitPlus(s,seq string) (result []string){
    //分配一个容量大于两者最大容量+1
    //使用make函数提前分配内存的改动,减少了2/3的内存分配次数,并且减少了一半的内存分配
    result = make([]string, 0, strings.Count(s, seq)+1)
    i := strings.Index(s, seq)
    for i>-1 {
        result = append(result, s[:i])
        s = s[i+len(seq):]
        i = strings.Index(s, seq)
    }
    result = append(result, s)
    return result
}

测试bench

package split

import (
    "reflect"
    "testing"
)

func BenchmarkSplit(b *testing.B) {
    for i:=0;i<b.N;i++ {
        Split("a:b:c",":")
    }
}

func BenchmarkSplitPlus(b *testing.B) {
    for i := 0; i < b.N; i++ {
        SplitPlus("a:b:c",":")
    }
}

测试Split函数

go test -bench=Split
image.png

测试Split函数内存消耗和分配情况

go test -bench=Split -benchmem
image.png

测试SplitPlus函数

go test -bench=SplitPlus
image.png

测试SplitPlus函数内存消耗和分配情况

go test -bench=SplitPlus -benchmem
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在*_test.go文件中,有三种类型的函数:测试函数、基准测试(benchmark)函数、示例函数。一个测试函数...
    一斗阅读 1,705评论 0 0
  • 什么是基准测试 基准测试,是一种测试代码性能的方法,比如你有多种不同的方案,都可以解决问题,那么到底是那种方案性能...
    风亡小窝阅读 1,541评论 0 0
  • 什么是基准测试 基准测试,是一种测试代码性能的方法,比如你有多种不同的方案,都可以解决问题,那么到底是那种方案性能...
    风亡小窝阅读 423评论 0 0
  • 什么是基准测试 基准测试是测试代码的一种方法,主要是通过测试代码CPU使用时间和内存占用率来评估被测试代码的性能,...
    taj3991阅读 500评论 0 0
  • golang的性能测试Benchmark go test 自带有三种测试: 功能测试(单元测试) 基准测试 (性能...
    Gopherzhang阅读 2,949评论 1 1