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

测试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

你可能感兴趣的:(go语言基准测试)