Go学习之Benchmark
Posted martinue
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go学习之Benchmark相关的知识,希望对你有一定的参考价值。
package main
import (
"testing"
)
func add(x, y int) int
return x + y
func BenchmarkAdd(b *testing.B)
//println("B.N=", b.N)
for i := 0; i < b.N; i++
_ = add(1, 2)
type DataAdd interface
Add() int
type Data struct
a, b int
func (d Data) Add() int
return d.a + d.b
func add1(a DataAdd) int
return a.Add()
func BenchmarkInterfaceAdd(b *testing.B)
//println("B.N=", b.N)
x := Data1, 2
for i := 0; i < b.N; i++
_ = add1(x)
func add2(x, y interface) int
return x.(int) + y.(int)
func BenchmarkInterfaceAddEmp(b *testing.B)
//println("B.N=", b.N)
for i := 0; i < b.N; i++
_ = add2(1, 2)
使用命令:
go test -bench .
结论是:
goos: darwin
goarch: amd64
BenchmarkAdd-12 1000000000 0.256 ns/op
BenchmarkInterfaceAdd-12 47876229 21.2 ns/op
BenchmarkInterfaceAddEmp-12 1000000000 0.252 ns/op
PASS
ok _/Users/bytedance/Desktop 1.649s
这么看起来接口转换的成本还是有一些高…
以上是关于Go学习之Benchmark的主要内容,如果未能解决你的问题,请参考以下文章