github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/algorithm/datastructures/unionfind/unionfind_test.go (about)

     1  package unionfind
     2  
     3  import (
     4  	"math/rand"
     5  	"testing"
     6  	"time"
     7  )
     8  
     9  func BenchmarkUnionFind(b *testing.B) {
    10  	r := rand.New(rand.NewSource(time.Now().Unix()))
    11  	size := b.N
    12  	uf := NewUnionFind(size)
    13  	for i := 0; i < b.N; i++ {
    14  		a := r.Intn(size)
    15  		b := r.Intn(size)
    16  		uf.UnionElements(a, b)
    17  	}
    18  	for i := 0; i < b.N; i++ {
    19  		a := r.Intn(size)
    20  		b := r.Intn(size)
    21  		uf.IsConnected(a, b)
    22  	}
    23  }
    24  
    25  func BenchmarkUnionFindSize(b *testing.B) {
    26  	r := rand.New(rand.NewSource(time.Now().Unix()))
    27  	size := b.N
    28  	uf := NewUnionFindOpSize(size)
    29  	for i := 0; i < b.N; i++ {
    30  		a := r.Intn(size)
    31  		b := r.Intn(size)
    32  		uf.UnionElements(a, b)
    33  	}
    34  	for i := 0; i < b.N; i++ {
    35  		a := r.Intn(size)
    36  		b := r.Intn(size)
    37  		uf.IsConnected(a, b)
    38  	}
    39  }