add benchmarks to demonstrate performance composition

pull/12444/head
Jacob Marble 2019-03-07 22:34:31 -08:00
parent b98a8fed0b
commit 5e9a74f46d
2 changed files with 37 additions and 7 deletions

View File

@ -78,7 +78,7 @@ func StartSpanFromContext(ctx context.Context) (opentracing.Span, context.Contex
n := runtime.Callers(2, pcs[:])
if n < 1 {
span, ctx := opentracing.StartSpanFromContext(ctx, "unknown")
span.LogFields(log.Error(errors.New("runtime.Caller failed")))
span.LogFields(log.Error(errors.New("runtime.Callers failed")))
return span, ctx
}
fn := runtime.FuncForPC(pcs[0])

View File

@ -120,12 +120,15 @@ func TestStartSpanFromContext(t *testing.T) {
}
/*
BenchmarkLocal_StartSpanFromContext-8 1000000 1262 ns/op 376 B/op 6 allocs/op
BenchmarkLocal_StartSpanFromContext_runtimeCaller-8 3000000 526 ns/op
BenchmarkLocal_StartSpanFromContext_runtimeCallersFrames-8 10000000 237 ns/op
BenchmarkOpentracing_StartSpanFromContext-8 10000000 157 ns/op 96 B/op 3 allocs/op
BenchmarkOpentracing_StartSpan_root-8 200000000 7.72 ns/op 0 B/op 0 allocs/op
BenchmarkOpentracing_StartSpan_child-8 20000000 70.5 ns/op 48 B/op 2 allocs/op
BenchmarkLocal_StartSpanFromContext-8 2000000 659 ns/op 224 B/op 4 allocs/op
BenchmarkLocal_StartSpanFromContext_runtimeCaller-8 3000000 534 ns/op
BenchmarkLocal_StartSpanFromContext_runtimeCallers-8 10000000 196 ns/op
BenchmarkLocal_StartSpanFromContext_runtimeFuncForPC-8 200000000 7.28 ns/op
BenchmarkLocal_StartSpanFromContext_runtimeCallersFrames-8 10000000 234 ns/op
BenchmarkLocal_StartSpanFromContext_runtimeFuncFileLine-8 20000000 103 ns/op
BenchmarkOpentracing_StartSpanFromContext-8 10000000 155 ns/op 96 B/op 3 allocs/op
BenchmarkOpentracing_StartSpan_root-8 200000000 7.68 ns/op 0 B/op 0 allocs/op
BenchmarkOpentracing_StartSpan_child-8 20000000 71.2 ns/op 48 B/op 2 allocs/op
*/
func BenchmarkLocal_StartSpanFromContext(b *testing.B) {
@ -145,6 +148,23 @@ func BenchmarkLocal_StartSpanFromContext_runtimeCaller(b *testing.B) {
}
}
func BenchmarkLocal_StartSpanFromContext_runtimeCallers(b *testing.B) {
var pcs [1]uintptr
for n := 0; n < b.N; n++ {
_ = runtime.Callers(2, pcs[:])
}
}
func BenchmarkLocal_StartSpanFromContext_runtimeFuncForPC(b *testing.B) {
var pcs [1]uintptr
_ = runtime.Callers(2, pcs[:])
for n := 0; n < b.N; n++ {
_ = runtime.FuncForPC(pcs[0])
}
}
func BenchmarkLocal_StartSpanFromContext_runtimeCallersFrames(b *testing.B) {
pc, _, _, ok := runtime.Caller(1)
if !ok {
@ -156,6 +176,16 @@ func BenchmarkLocal_StartSpanFromContext_runtimeCallersFrames(b *testing.B) {
}
}
func BenchmarkLocal_StartSpanFromContext_runtimeFuncFileLine(b *testing.B) {
var pcs [1]uintptr
_ = runtime.Callers(2, pcs[:])
fn := runtime.FuncForPC(pcs[0])
for n := 0; n < b.N; n++ {
_, _ = fn.FileLine(pcs[0])
}
}
func BenchmarkOpentracing_StartSpanFromContext(b *testing.B) {
b.ReportAllocs()