mirror of
https://github.com/gonum/gonum.git
synced 2025-10-05 15:16:59 +08:00
mat: don't use global rand state
This commit is contained in:
@@ -498,8 +498,9 @@ func BenchmarkAddScaledVec1000Inc20(b *testing.B) { addScaledVecBench(b, 1000,
|
||||
func BenchmarkAddScaledVec10000Inc20(b *testing.B) { addScaledVecBench(b, 10000, 20) }
|
||||
func BenchmarkAddScaledVec100000Inc20(b *testing.B) { addScaledVecBench(b, 100000, 20) }
|
||||
func addScaledVecBench(b *testing.B, size, inc int) {
|
||||
x := randVecDense(size, inc, 1, rand.NormFloat64)
|
||||
y := randVecDense(size, inc, 1, rand.NormFloat64)
|
||||
src := rand.NewSource(1)
|
||||
x := randVecDense(size, inc, 1, src)
|
||||
y := randVecDense(size, inc, 1, src)
|
||||
b.ResetTimer()
|
||||
var v VecDense
|
||||
for i := 0; i < b.N; i++ {
|
||||
@@ -523,7 +524,8 @@ func BenchmarkScaleVec1000Inc20(b *testing.B) { scaleVecBench(b, 1000, 20) }
|
||||
func BenchmarkScaleVec10000Inc20(b *testing.B) { scaleVecBench(b, 10000, 20) }
|
||||
func BenchmarkScaleVec100000Inc20(b *testing.B) { scaleVecBench(b, 100000, 20) }
|
||||
func scaleVecBench(b *testing.B, size, inc int) {
|
||||
x := randVecDense(size, inc, 1, rand.NormFloat64)
|
||||
src := rand.NewSource(1)
|
||||
x := randVecDense(size, inc, 1, src)
|
||||
b.ResetTimer()
|
||||
var v VecDense
|
||||
for i := 0; i < b.N; i++ {
|
||||
@@ -547,8 +549,9 @@ func BenchmarkAddVec1000Inc20(b *testing.B) { addVecBench(b, 1000, 20) }
|
||||
func BenchmarkAddVec10000Inc20(b *testing.B) { addVecBench(b, 10000, 20) }
|
||||
func BenchmarkAddVec100000Inc20(b *testing.B) { addVecBench(b, 100000, 20) }
|
||||
func addVecBench(b *testing.B, size, inc int) {
|
||||
x := randVecDense(size, inc, 1, rand.NormFloat64)
|
||||
y := randVecDense(size, inc, 1, rand.NormFloat64)
|
||||
src := rand.NewSource(1)
|
||||
x := randVecDense(size, inc, 1, src)
|
||||
y := randVecDense(size, inc, 1, src)
|
||||
b.ResetTimer()
|
||||
var v VecDense
|
||||
for i := 0; i < b.N; i++ {
|
||||
@@ -572,8 +575,9 @@ func BenchmarkSubVec1000Inc20(b *testing.B) { subVecBench(b, 1000, 20) }
|
||||
func BenchmarkSubVec10000Inc20(b *testing.B) { subVecBench(b, 10000, 20) }
|
||||
func BenchmarkSubVec100000Inc20(b *testing.B) { subVecBench(b, 100000, 20) }
|
||||
func subVecBench(b *testing.B, size, inc int) {
|
||||
x := randVecDense(size, inc, 1, rand.NormFloat64)
|
||||
y := randVecDense(size, inc, 1, rand.NormFloat64)
|
||||
src := rand.NewSource(1)
|
||||
x := randVecDense(size, inc, 1, src)
|
||||
y := randVecDense(size, inc, 1, src)
|
||||
b.ResetTimer()
|
||||
var v VecDense
|
||||
for i := 0; i < b.N; i++ {
|
||||
@@ -581,14 +585,15 @@ func subVecBench(b *testing.B, size, inc int) {
|
||||
}
|
||||
}
|
||||
|
||||
func randVecDense(size, inc int, rho float64, rnd func() float64) *VecDense {
|
||||
func randVecDense(size, inc int, rho float64, src rand.Source) *VecDense {
|
||||
if size <= 0 {
|
||||
panic("bad vector size")
|
||||
}
|
||||
rnd := rand.New(src)
|
||||
data := make([]float64, size*inc)
|
||||
for i := range data {
|
||||
if rand.Float64() < rho {
|
||||
data[i] = rnd()
|
||||
if rnd.Float64() < rho {
|
||||
data[i] = rnd.NormFloat64()
|
||||
}
|
||||
}
|
||||
return &VecDense{
|
||||
@@ -605,7 +610,8 @@ func BenchmarkVectorSum100000(b *testing.B) { vectorSumBench(b, 100000) }
|
||||
var vectorSumForBench float64
|
||||
|
||||
func vectorSumBench(b *testing.B, size int) {
|
||||
a := randVecDense(size, 1, 1.0, rand.NormFloat64)
|
||||
src := rand.NewSource(1)
|
||||
a := randVecDense(size, 1, 1.0, src)
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
vectorSumForBench = Sum(a)
|
||||
|
Reference in New Issue
Block a user