github.com/Kintar/etxt@v0.0.0-20221224033739-2fc69f000137/emask/edge_marker_bench_test.go (about)

     1  //go:build gtxt
     2  
     3  package emask
     4  
     5  import "os"
     6  import "log"
     7  import "math/rand"
     8  import "testing"
     9  
    10  import "golang.org/x/image/math/fixed"
    11  
    12  const rastBenchSeed = int64(0) // use 0 for PID-based seed
    13  func makeRng() *rand.Rand {
    14  	seed := rastBenchSeed
    15  	if seed == 0 {
    16  		seed = int64(os.Getpid())
    17  	}
    18  	return rand.New(rand.NewSource(seed))
    19  }
    20  
    21  func BenchmarkStdRast(b *testing.B) {
    22  	rng := makeRng()
    23  	rast := &DefaultRasterizer{}
    24  	for n := 0; n < b.N; n++ {
    25  		for size := 16; size <= 512; size *= 2 {
    26  			shape := randomShape(rng, 16, size, size)
    27  			segments := shape.Segments()
    28  			_, err := Rasterize(segments, rast, fixed.Point26_6{})
    29  			if err != nil {
    30  				log.Fatalf("rasterization error: %s", err.Error())
    31  			}
    32  		}
    33  	}
    34  }
    35  
    36  func BenchmarkEdgeRast(b *testing.B) {
    37  	rng := makeRng()
    38  	rast := NewStdEdgeMarkerRasterizer()
    39  	for n := 0; n < b.N; n++ {
    40  		for size := 16; size <= 512; size *= 2 {
    41  			shape := randomShape(rng, 16, size, size)
    42  			segments := shape.Segments()
    43  			_, err := Rasterize(segments, rast, fixed.Point26_6{})
    44  			if err != nil {
    45  				log.Fatalf("rasterization error: %s", err.Error())
    46  			}
    47  		}
    48  	}
    49  }