github.com/mitranim/gg@v0.1.17/trace_test.go (about) 1 package gg_test 2 3 import ( 4 "testing" 5 6 "github.com/mitranim/gg" 7 ) 8 9 func BenchmarkCaptureTrace_shallow(b *testing.B) { 10 for ind := 0; ind < b.N; ind++ { 11 gg.Nop1(gg.CaptureTrace(0)) 12 } 13 } 14 15 func BenchmarkCaptureTrace_deep(b *testing.B) { 16 for ind := 0; ind < b.N; ind++ { 17 gg.Nop1(trace0()) 18 } 19 } 20 21 func BenchmarkTrace_Frames_shallow(b *testing.B) { 22 trace := gg.CaptureTrace(0) 23 b.ResetTimer() 24 25 for ind := 0; ind < b.N; ind++ { 26 gg.Nop1(trace.Frames()) 27 } 28 } 29 30 func BenchmarkTrace_Frames_deep(b *testing.B) { 31 trace := trace0() 32 b.ResetTimer() 33 34 for ind := 0; ind < b.N; ind++ { 35 gg.Nop1(trace.Frames()) 36 } 37 } 38 39 func BenchmarkFrames_NameWidth(b *testing.B) { 40 frames := trace0().Frames() 41 b.ResetTimer() 42 43 for ind := 0; ind < b.N; ind++ { 44 gg.Nop1(frames.NameWidth()) 45 } 46 } 47 48 func BenchmarkFrames_AppendIndentTable(b *testing.B) { 49 frames := trace0().Frames() 50 buf := make([]byte, 0, 1<<16) 51 b.ResetTimer() 52 53 for ind := 0; ind < b.N; ind++ { 54 gg.Nop1(frames.AppendIndentTable(buf, 0)) 55 } 56 } 57 58 func BenchmarkFrames_AppendIndentTable_rel_path(b *testing.B) { 59 defer gg.SnapSwap(&gg.TraceSkipLang, true).Done() 60 defer gg.SnapSwap(&gg.TraceBaseDir, gg.Cwd()).Done() 61 62 frames := trace0().Frames() 63 buf := make([]byte, 0, 1<<16) 64 b.ResetTimer() 65 66 for ind := 0; ind < b.N; ind++ { 67 gg.Nop1(frames.AppendIndentTable(buf, 0)) 68 } 69 } 70 71 func BenchmarkTrace_capture_append(b *testing.B) { 72 buf := make([]byte, 0, 1<<16) 73 b.ResetTimer() 74 75 for ind := 0; ind < b.N; ind++ { 76 gg.Nop1(trace0().AppendTo(buf)) 77 } 78 } 79 80 func trace0() gg.Trace { return trace1() } 81 func trace1() gg.Trace { return trace2() } 82 func trace2() gg.Trace { return trace3() } 83 func trace3() gg.Trace { return trace4() } 84 func trace4() gg.Trace { return trace5() } 85 func trace5() gg.Trace { return trace6() } 86 func trace6() gg.Trace { return trace7() } 87 func trace7() gg.Trace { return trace8() } 88 func trace8() gg.Trace { return trace9() } 89 func trace9() gg.Trace { return gg.CaptureTrace(0) }