github.com/go-asm/go@v1.21.1-0.20240213172139-40c5ead50c48/cmd/compile/ssa/bench_test.go (about)

     1  // Copyright 2020 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  package ssa
     5  
     6  import (
     7  	"math/rand"
     8  	"testing"
     9  )
    10  
    11  var d int
    12  
    13  //go:noinline
    14  func fn(a, b int) bool {
    15  	c := false
    16  	if a > 0 {
    17  		if b < 0 {
    18  			d = d + 1
    19  		}
    20  		c = true
    21  	}
    22  	return c
    23  }
    24  
    25  func BenchmarkPhioptPass(b *testing.B) {
    26  	for i := 0; i < b.N; i++ {
    27  		a := rand.Perm(i/10 + 10)
    28  		for i := 1; i < len(a)/2; i++ {
    29  			fn(a[i]-a[i-1], a[i+len(a)/2-2]-a[i+len(a)/2-1])
    30  		}
    31  	}
    32  }
    33  
    34  type Point struct {
    35  	X, Y int
    36  }
    37  
    38  //go:noinline
    39  func sign(p1, p2, p3 Point) bool {
    40  	return (p1.X-p3.X)*(p2.Y-p3.Y)-(p2.X-p3.X)*(p1.Y-p3.Y) < 0
    41  }
    42  
    43  func BenchmarkInvertLessThanNoov(b *testing.B) {
    44  	p1 := Point{1, 2}
    45  	p2 := Point{2, 3}
    46  	p3 := Point{3, 4}
    47  	for i := 0; i < b.N; i++ {
    48  		sign(p1, p2, p3)
    49  	}
    50  }