OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / gonum.org / v1 / gonum / blas / testblas / level2bench.go
diff --git a/vendor/gonum.org/v1/gonum/blas/testblas/level2bench.go b/vendor/gonum.org/v1/gonum/blas/testblas/level2bench.go
new file mode 100644 (file)
index 0000000..f5b7db4
--- /dev/null
@@ -0,0 +1,61 @@
+package testblas
+
+import (
+       "testing"
+
+       "golang.org/x/exp/rand"
+
+       "gonum.org/v1/gonum/blas"
+)
+
+func DgemvBenchmark(b *testing.B, blasser Dgemver, tA blas.Transpose, m, n, incX, incY int) {
+       var lenX, lenY int
+       if tA == blas.NoTrans {
+               lenX = n
+               lenY = m
+       } else {
+               lenX = m
+               lenY = n
+       }
+       xr := make([]float64, lenX)
+       for i := range xr {
+               xr[i] = rand.Float64()
+       }
+       x := makeIncremented(xr, incX, 0)
+       yr := make([]float64, lenY)
+       for i := range yr {
+               yr[i] = rand.Float64()
+       }
+       y := makeIncremented(yr, incY, 0)
+       a := make([]float64, m*n)
+       for i := range a {
+               a[i] = rand.Float64()
+       }
+
+       b.ResetTimer()
+       for i := 0; i < b.N; i++ {
+               blasser.Dgemv(tA, m, n, 2, a, n, x, incX, 3, y, incY)
+       }
+}
+
+func DgerBenchmark(b *testing.B, blasser Dgerer, m, n, incX, incY int) {
+       xr := make([]float64, m)
+       for i := range xr {
+               xr[i] = rand.Float64()
+       }
+       x := makeIncremented(xr, incX, 0)
+       yr := make([]float64, n)
+       for i := range yr {
+               yr[i] = rand.Float64()
+       }
+       y := makeIncremented(yr, incY, 0)
+       a := make([]float64, m*n)
+       for i := range a {
+               a[i] = rand.Float64()
+       }
+
+       b.ResetTimer()
+       for i := 0; i < b.N; i++ {
+               blasser.Dger(m, n, 2, x, incX, y, incY, a, n)
+       }
+}