1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
package gousb
import "testing"
func BenchmarkCGo(b *testing.B) {
for _, bc := range []struct {
name string
bfunc func(*libusbContext, int)
}{
{
name: "simple function",
bfunc: func(ctx *libusbContext, N int) {
for i := 0; i < N; i++ {
libusbSetDebug(ctx, i&1)
}
},
},
{
name: "method",
bfunc: func(ctx *libusbContext, N int) {
impl := libusbImpl{}
for i := 0; i < N; i++ {
impl.setDebug(ctx, i&1)
}
},
},
{
name: "interface",
bfunc: func(ctx *libusbContext, N int) {
var intf libusbIntf = libusbImpl{}
for i := 0; i < N; i++ {
intf.setDebug(ctx, i&1)
}
},
},
} {
b.Run(bc.name, func(b *testing.B) {
ctx, err := libusbImpl{}.init()
if err != nil {
b.Fatalf("libusb_init() failed: %v", err)
}
defer libusbImpl{}.exit(ctx)
b.ResetTimer()
bc.bfunc(ctx, b.N)
})
}
}
|