mirror of
https://github.com/teivah/100-go-mistakes.git
synced 2026-06-21 00:47:11 +08:00
62 lines
1,009 B
Go
62 lines
1,009 B
Go
package main
|
|
|
|
import (
|
|
"math/rand"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
var global []int
|
|
|
|
func Benchmark_sequentialMergesort(b *testing.B) {
|
|
var local []int
|
|
b.ResetTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
b.StopTimer()
|
|
input := getRandomElements()
|
|
b.StartTimer()
|
|
|
|
sequentialMergesort(input)
|
|
local = input
|
|
}
|
|
global = local
|
|
}
|
|
|
|
func Benchmark_parallelMergesortV1(b *testing.B) {
|
|
var local []int
|
|
b.ResetTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
b.StopTimer()
|
|
input := getRandomElements()
|
|
b.StartTimer()
|
|
|
|
parallelMergesortV1(input)
|
|
local = input
|
|
}
|
|
global = local
|
|
}
|
|
|
|
func Benchmark_parallelMergesortV2(b *testing.B) {
|
|
var local []int
|
|
b.ResetTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
b.StopTimer()
|
|
input := getRandomElements()
|
|
b.StartTimer()
|
|
|
|
parallelMergesortV2(input)
|
|
local = input
|
|
}
|
|
global = local
|
|
}
|
|
|
|
func getRandomElements() []int {
|
|
n := 10_000
|
|
res := make([]int, n)
|
|
src := rand.NewSource(time.Now().UnixNano())
|
|
rnd := rand.New(src)
|
|
for i := 0; i < n; i++ {
|
|
res[i] = rnd.Int()
|
|
}
|
|
return res
|
|
}
|