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) }