From deaf8cde256313c454b897b7b533940b47dad7f8 Mon Sep 17 00:00:00 2001 From: eson <474420502@qq.com> Date: Wed, 8 May 2019 17:33:58 +0800 Subject: [PATCH] =?UTF-8?q?benchmark=20=E8=BD=AC=E7=A7=BB=E5=88=B0?= =?UTF-8?q?=E5=85=B6=E4=BB=96=E4=BB=93=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- heap/heap_test.go | 347 ++++----- lastack/lastack_test.go | 189 +++-- map/hashmap/hashmap_test.go | 68 +- priority_list/priority_list_test.go | 56 +- priority_queue/priority_queue_test.go | 158 ++-- priority_queue/vbt_test.go | 738 ++++++++++--------- priority_queuekey/priority_queuekey_test.go | 158 ++-- priority_queuekey/vbt_test.go | 738 ++++++++++--------- sparse_array/array2/array2_test.go | 84 ++- sparse_array/array3/array3_test.go | 84 ++- sparse_array/arrayn/arrayn_test.go | 91 ++- stack/stack_test.go | 140 ++-- tree/avl/avl_test.go | 473 ++++++------ tree/avldup/avldup_test.go | 457 ++++++------ tree/avlkey/avlkey_test.go | 445 ++++++------ tree/avlkeydup/avlkeydup_test.go | 457 ++++++------ tree/vbt/vbt_test.go | 754 ++++++++++---------- tree/vbtkey/vbtkey_test.go | 720 ++++++++++--------- 18 files changed, 3082 insertions(+), 3075 deletions(-) diff --git a/heap/heap_test.go b/heap/heap_test.go index cd70d26..bb9cb66 100644 --- a/heap/heap_test.go +++ b/heap/heap_test.go @@ -1,182 +1,201 @@ package heap import ( - "bytes" - "encoding/gob" - "io/ioutil" - "log" "testing" - "github.com/Pallinder/go-randomdata" - - "github.com/davecgh/go-spew/spew" - - "github.com/emirpasic/gods/trees/binaryheap" + "github.com/474420502/focus/compare" ) -func Int(k1, k2 interface{}) int { - c1 := k1.(int) - c2 := k2.(int) - switch { - case c1 > c2: - return -1 - case c1 < c2: - return 1 - default: - return 0 - } -} - -func TestPush(t *testing.T) { - - for i := 0; i < 1000000; i++ { - h := New(Int) - - gods := binaryheap.NewWithIntComparator() - for c := 0; c < 20; c++ { - v := randomdata.Number(0, 100) - h.Push(v) - gods.Push(v) - } - - r1 := spew.Sprint(h.Values()) - r2 := spew.Sprint(gods.Values()) - if r1 != r2 { - t.Error(r1) - t.Error(r2) - break - } +func TestHeapPushTopPop(t *testing.T) { + h := New(compare.Int) + l := []int{9, 5, 15, 2, 3} + ol := []int{15, 9, 5, 3, 2} + for _, v := range l { + h.Push(v) } -} - -func TestPop(t *testing.T) { - - for i := 0; i < 200000; i++ { - h := New(Int) - - // m := make(map[int]int) - gods := binaryheap.NewWithIntComparator() - for c := 0; c < 40; c++ { - v := randomdata.Number(0, 100) - // if _, ok := m[v]; !ok { - h.Push(v) - gods.Push(v) - // m[v] = v - // } - - } - - // t.Error(h.Values()) - // t.Error(gods.Values()) - for c := 0; c < randomdata.Number(5, 10); c++ { - v1, _ := h.Pop() - v2, _ := gods.Pop() - - if v1 != v2 { - t.Error(h.Values(), v1) - t.Error(gods.Values(), v2) - return + for _, tv := range ol { + if v, isfound := h.Top(); isfound { + if !(isfound && v == tv) { + t.Error(v) } } - r1 := spew.Sprint(h.Values()) - r2 := spew.Sprint(gods.Values()) - if r1 != r2 { - t.Error(r1) - t.Error(r2) - break - } - } -} - -func BenchmarkPush(b *testing.B) { - - l := loadTestData() - - b.ResetTimer() - execCount := 50 - b.N = len(l) * execCount - - for c := 0; c < execCount; c++ { - b.StopTimer() - h := New(Int) - b.StartTimer() - for _, v := range l { - h.Push(v) - } - } -} - -func BenchmarkPop(b *testing.B) { - - h := New(Int) - - l := loadTestData() - - b.ResetTimer() - execCount := 20 - b.N = len(l) * execCount - - for c := 0; c < execCount; c++ { - b.StopTimer() - for _, v := range l { - h.Push(v) - } - b.StartTimer() - for h.size != 0 { - h.Pop() - } - } -} - -func BenchmarkGodsPop(b *testing.B) { - - h := binaryheap.NewWithIntComparator() - - l := loadTestData() - - b.ResetTimer() - execCount := 20 - b.N = len(l) * execCount - - for c := 0; c < execCount; c++ { - b.StopTimer() - for _, v := range l { - h.Push(v) - } - b.StartTimer() - for h.Size() != 0 { - h.Pop() + if v, isfound := h.Pop(); isfound { + if !(isfound && v == tv) { + t.Error(v) + } } } -} - -func BenchmarkGodsPush(b *testing.B) { - l := loadTestData() - - b.ResetTimer() - execCount := 50 - b.N = len(l) * execCount - - for c := 0; c < execCount; c++ { - b.StopTimer() - h := binaryheap.NewWith(Int) - b.StartTimer() - for _, v := range l { - h.Push(v) - } + if h.Size() != 0 { + t.Error("heap size is not equals to zero") } } -func loadTestData() []int { - data, err := ioutil.ReadFile("../l.log") - if err != nil { - log.Println(err) - } - var l []int - decoder := gob.NewDecoder(bytes.NewReader(data)) - decoder.Decode(&l) - return l -} +// func Int(k1, k2 interface{}) int { +// c1 := k1.(int) +// c2 := k2.(int) +// switch { +// case c1 > c2: +// return -1 +// case c1 < c2: +// return 1 +// default: +// return 0 +// } +// } + +// func TestPush(t *testing.T) { + +// for i := 0; i < 1000000; i++ { +// h := New(Int) + +// gods := binaryheap.NewWithIntComparator() +// for c := 0; c < 20; c++ { +// v := randomdata.Number(0, 100) +// h.Push(v) +// gods.Push(v) +// } + +// r1 := spew.Sprint(h.Values()) +// r2 := spew.Sprint(gods.Values()) +// if r1 != r2 { +// t.Error(r1) +// t.Error(r2) +// break +// } +// } + +// } + +// func TestPop(t *testing.T) { + +// for i := 0; i < 200000; i++ { +// h := New(Int) + +// // m := make(map[int]int) +// gods := binaryheap.NewWithIntComparator() +// for c := 0; c < 40; c++ { +// v := randomdata.Number(0, 100) +// // if _, ok := m[v]; !ok { +// h.Push(v) +// gods.Push(v) +// // m[v] = v +// // } + +// } + +// // t.Error(h.Values()) +// // t.Error(gods.Values()) +// for c := 0; c < randomdata.Number(5, 10); c++ { +// v1, _ := h.Pop() +// v2, _ := gods.Pop() + +// if v1 != v2 { +// t.Error(h.Values(), v1) +// t.Error(gods.Values(), v2) +// return +// } +// } + +// r1 := spew.Sprint(h.Values()) +// r2 := spew.Sprint(gods.Values()) +// if r1 != r2 { +// t.Error(r1) +// t.Error(r2) +// break +// } +// } +// } + +// func BenchmarkPush(b *testing.B) { + +// l := loadTestData() + +// b.ResetTimer() +// execCount := 50 +// b.N = len(l) * execCount + +// for c := 0; c < execCount; c++ { +// b.StopTimer() +// h := New(Int) +// b.StartTimer() +// for _, v := range l { +// h.Push(v) +// } +// } +// } + +// func BenchmarkPop(b *testing.B) { + +// h := New(Int) + +// l := loadTestData() + +// b.ResetTimer() +// execCount := 20 +// b.N = len(l) * execCount + +// for c := 0; c < execCount; c++ { +// b.StopTimer() +// for _, v := range l { +// h.Push(v) +// } +// b.StartTimer() +// for h.size != 0 { +// h.Pop() +// } +// } +// } + +// func BenchmarkGodsPop(b *testing.B) { + +// h := binaryheap.NewWithIntComparator() + +// l := loadTestData() + +// b.ResetTimer() +// execCount := 20 +// b.N = len(l) * execCount + +// for c := 0; c < execCount; c++ { +// b.StopTimer() +// for _, v := range l { +// h.Push(v) +// } +// b.StartTimer() +// for h.Size() != 0 { +// h.Pop() +// } +// } + +// } + +// func BenchmarkGodsPush(b *testing.B) { +// l := loadTestData() + +// b.ResetTimer() +// execCount := 50 +// b.N = len(l) * execCount + +// for c := 0; c < execCount; c++ { +// b.StopTimer() +// h := binaryheap.NewWith(Int) +// b.StartTimer() +// for _, v := range l { +// h.Push(v) +// } +// } +// } + +// func loadTestData() []int { +// data, err := ioutil.ReadFile("../l.log") +// if err != nil { +// log.Println(err) +// } +// var l []int +// decoder := gob.NewDecoder(bytes.NewReader(data)) +// decoder.Decode(&l) +// return l +// } diff --git a/lastack/lastack_test.go b/lastack/lastack_test.go index 808b997..f7dad99 100644 --- a/lastack/lastack_test.go +++ b/lastack/lastack_test.go @@ -4,10 +4,6 @@ import ( "testing" "github.com/davecgh/go-spew/spew" - - "github.com/emirpasic/gods/stacks/arraystack" - - "github.com/Pallinder/go-randomdata" ) func TestPush(t *testing.T) { @@ -73,101 +69,138 @@ func TestPush(t *testing.T) { } -func BenchmarkGet(b *testing.B) { +func TestGet(t *testing.T) { s := New() - b.N = 20000000 - for i := 0; i < b.N; i++ { - v := randomdata.Number(0, 65535) + l := []int{10, 7, 3, 4, 5, 15} + for _, v := range l { s.Push(v) } - b.ResetTimer() - b.StartTimer() + if v, isfound := s.Get(0); isfound { + if v != 15 { + t.Error("15 is not equal to 15") + } + } else { + t.Error("index 0 is not exists") + } - for i := 0; i < b.N; i++ { - s.Get(i) + for i, tv := range l { + if v, isfound := s.Get(len(l) - 1 - i); isfound { + if v != tv { + t.Error(v, "is not equal to", tv) + } + } else { + t.Error("index 0 is not exists") + } + } + + for i, tv := range l[0 : len(l)-1] { + if v, isfound := s.Get(len(l) - 1 - i); isfound { + if v != tv { + t.Error(v, "is not equal to", tv) + } + } else { + t.Error("index 0 is not exists") + } } } -func BenchmarkPush(b *testing.B) { - s := New() - b.N = 20000000 - for i := 0; i < b.N; i++ { - v := randomdata.Number(0, 65535) - s.Push(v) - } -} +// func BenchmarkGet(b *testing.B) { +// s := New() +// b.N = 20000000 -func BenchmarkGodsPush(b *testing.B) { - s := arraystack.New() - b.N = 2000000 - for i := 0; i < b.N; i++ { - v := randomdata.Number(0, 65535) - s.Push(v) - } -} +// for i := 0; i < b.N; i++ { +// v := randomdata.Number(0, 65535) +// s.Push(v) +// } -func BenchmarkPop(b *testing.B) { - s := New() - b.N = 2000000 +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < b.N; i++ { - v := randomdata.Number(0, 65535) - s.Push(v) - } +// for i := 0; i < b.N; i++ { +// s.Get(i) +// } +// } - b.ResetTimer() - b.StartTimer() +// func BenchmarkPush(b *testing.B) { +// s := New() +// b.N = 20000000 +// for i := 0; i < b.N; i++ { +// v := randomdata.Number(0, 65535) +// s.Push(v) +// } +// } - for i := 0; i < b.N; i++ { - s.Pop() - } -} +// func BenchmarkGodsPush(b *testing.B) { +// s := arraystack.New() +// b.N = 2000000 +// for i := 0; i < b.N; i++ { +// v := randomdata.Number(0, 65535) +// s.Push(v) +// } +// } -func BenchmarkGodsPop(b *testing.B) { - s := arraystack.New() - b.N = 2000000 +// func BenchmarkPop(b *testing.B) { +// s := New() +// b.N = 2000000 - for i := 0; i < b.N; i++ { - v := randomdata.Number(0, 65535) - s.Push(v) - } +// for i := 0; i < b.N; i++ { +// v := randomdata.Number(0, 65535) +// s.Push(v) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < b.N; i++ { - s.Pop() - } -} +// for i := 0; i < b.N; i++ { +// s.Pop() +// } +// } -func BenchmarkValues(b *testing.B) { - s := New() - for i := 0; i < b.N; i++ { - v := randomdata.Number(0, 65535) - s.Push(v) - } +// func BenchmarkGodsPop(b *testing.B) { +// s := arraystack.New() +// b.N = 2000000 - b.ResetTimer() - b.StartTimer() +// for i := 0; i < b.N; i++ { +// v := randomdata.Number(0, 65535) +// s.Push(v) +// } - for i := 0; i < b.N; i++ { - s.Values() - } -} +// b.ResetTimer() +// b.StartTimer() -func BenchmarkGodsValues(b *testing.B) { - s := arraystack.New() - for i := 0; i < b.N; i++ { - v := randomdata.Number(0, 65535) - s.Push(v) - } +// for i := 0; i < b.N; i++ { +// s.Pop() +// } +// } - b.ResetTimer() - b.StartTimer() +// func BenchmarkValues(b *testing.B) { +// s := New() +// for i := 0; i < b.N; i++ { +// v := randomdata.Number(0, 65535) +// s.Push(v) +// } - for i := 0; i < b.N; i++ { - s.Values() - } -} +// b.ResetTimer() +// b.StartTimer() + +// for i := 0; i < b.N; i++ { +// s.Values() +// } +// } + +// func BenchmarkGodsValues(b *testing.B) { +// s := arraystack.New() +// for i := 0; i < b.N; i++ { +// v := randomdata.Number(0, 65535) +// s.Push(v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// for i := 0; i < b.N; i++ { +// s.Values() +// } +// } diff --git a/map/hashmap/hashmap_test.go b/map/hashmap/hashmap_test.go index 853bf65..426da2b 100644 --- a/map/hashmap/hashmap_test.go +++ b/map/hashmap/hashmap_test.go @@ -31,50 +31,50 @@ func TestCount(t *testing.T) { // t.Error(hm.Get(4)) } -var executeCount = 5 -var compareSize = 100000 +// var executeCount = 5 +// var compareSize = 100000 -func BenchmarkPut(b *testing.B) { - b.StopTimer() +// func BenchmarkPut(b *testing.B) { +// b.StopTimer() - l := loadTestData() - hm := New() - b.N = len(l) * executeCount +// l := loadTestData() +// hm := New() +// b.N = len(l) * executeCount - // for i := 0; i < len(l); i++ { - // v := l[i] - // hm.Put(v, v) - // } +// // for i := 0; i < len(l); i++ { +// // v := l[i] +// // hm.Put(v, v) +// // } - b.StartTimer() +// b.StartTimer() - for c := 0; c < executeCount; c++ { - for i := 0; i < len(l); i++ { - v := l[i] - hm.Put(v, v) - } - } +// for c := 0; c < executeCount; c++ { +// for i := 0; i < len(l); i++ { +// v := l[i] +// hm.Put(v, v) +// } +// } - //b.Log(len(hm.table), hm.size) - //PrintMemUsage() -} +// //b.Log(len(hm.table), hm.size) +// //PrintMemUsage() +// } -func BenchmarkGoPut(b *testing.B) { +// func BenchmarkGoPut(b *testing.B) { - l := loadTestData() +// l := loadTestData() - hm := make(map[int]int) - b.N = len(l) * executeCount - for c := 0; c < executeCount; c++ { - for i := 0; i < len(l); i++ { - v := l[i] - hm[v] = v - } - } +// hm := make(map[int]int) +// b.N = len(l) * executeCount +// for c := 0; c < executeCount; c++ { +// for i := 0; i < len(l); i++ { +// v := l[i] +// hm[v] = v +// } +// } - //b.Log(len(m)) - //PrintMemUsage() -} +// //b.Log(len(m)) +// //PrintMemUsage() +// } // func BenchmarkGet(b *testing.B) { diff --git a/priority_list/priority_list_test.go b/priority_list/priority_list_test.go index a44ee97..2ea0129 100644 --- a/priority_list/priority_list_test.go +++ b/priority_list/priority_list_test.go @@ -222,39 +222,39 @@ func TestRemove(t *testing.T) { } -func BenchmarkGet(b *testing.B) { - pl := New(compare.Int) +// func BenchmarkGet(b *testing.B) { +// pl := New(compare.Int) - l := loadTestData() +// l := loadTestData() - for _, v := range l { - pl.Push(v) - } +// for _, v := range l { +// pl.Push(v) +// } - b.ResetTimer() - b.StartTimer() - b.N = len(l) +// b.ResetTimer() +// b.StartTimer() +// b.N = len(l) - for i := 0; i < b.N; i++ { - if i%2 == 0 { - pl.Get(i) - } - } +// for i := 0; i < b.N; i++ { +// if i%2 == 0 { +// pl.Get(i) +// } +// } -} -func BenchmarkInsert(b *testing.B) { +// } +// func BenchmarkInsert(b *testing.B) { - l := loadTestData() +// l := loadTestData() - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - execCount := 1 - b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - pl := New(compare.Int) - for _, v := range l { - pl.Push(v) - } - } -} +// execCount := 1 +// b.N = len(l) * execCount +// for i := 0; i < execCount; i++ { +// pl := New(compare.Int) +// for _, v := range l { +// pl.Push(v) +// } +// } +// } diff --git a/priority_queue/priority_queue_test.go b/priority_queue/priority_queue_test.go index 83638c0..e3f3eb8 100644 --- a/priority_queue/priority_queue_test.go +++ b/priority_queue/priority_queue_test.go @@ -242,106 +242,106 @@ func TestQueueIndex(t *testing.T) { } } -func BenchmarkQueueGet(b *testing.B) { +// func BenchmarkQueueGet(b *testing.B) { - l := loadTestData() +// l := loadTestData() - pq := New(compare.Int) - for _, v := range l { - pq.Push(v) - } +// pq := New(compare.Int) +// for _, v := range l { +// pq.Push(v) +// } - execCount := 5 - b.N = len(l) * execCount +// execCount := 5 +// b.N = len(l) * execCount - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() -ALL: - for i := 0; i < execCount; i++ { - for _, v := range l { - if gv, ok := pq.Get(v); !ok { - b.Error(gv) - break ALL - } - } - } -} +// ALL: +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// if gv, ok := pq.Get(v); !ok { +// b.Error(gv) +// break ALL +// } +// } +// } +// } -func BenchmarkQueueRemove(b *testing.B) { - l := loadTestData() +// func BenchmarkQueueRemove(b *testing.B) { +// l := loadTestData() - pq := New(compare.Int) - for _, v := range l { - pq.Push(v) - } +// pq := New(compare.Int) +// for _, v := range l { +// pq.Push(v) +// } - b.N = len(l) - b.ResetTimer() - b.StartTimer() +// b.N = len(l) +// b.ResetTimer() +// b.StartTimer() - for _, v := range l { - pq.Remove(v) - } -} +// for _, v := range l { +// pq.Remove(v) +// } +// } -func BenchmarkQueueIndex(b *testing.B) { +// func BenchmarkQueueIndex(b *testing.B) { - l := loadTestData() +// l := loadTestData() - pq := New(compare.Int) - for _, v := range l { - pq.Push(v) - } +// pq := New(compare.Int) +// for _, v := range l { +// pq.Push(v) +// } - execCount := 2 - b.N = len(l) * execCount +// execCount := 2 +// b.N = len(l) * execCount - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() -ALL: - for i := 0; i < execCount; i++ { - for idx := range l { - if v, ok := pq.Index(idx); !ok { - b.Error(v) - break ALL - } - } - } -} +// ALL: +// for i := 0; i < execCount; i++ { +// for idx := range l { +// if v, ok := pq.Index(idx); !ok { +// b.Error(v) +// break ALL +// } +// } +// } +// } -func BenchmarkPriorityPush(b *testing.B) { +// func BenchmarkPriorityPush(b *testing.B) { - l := loadTestData() - execCount := 5 - b.N = len(l) * execCount +// l := loadTestData() +// execCount := 5 +// b.N = len(l) * execCount - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < execCount; i++ { - pq := New(compare.Int) - for _, v := range l { - pq.Push(v) - } - } -} +// for i := 0; i < execCount; i++ { +// pq := New(compare.Int) +// for _, v := range l { +// pq.Push(v) +// } +// } +// } -func BenchmarkPriorityPop(b *testing.B) { +// func BenchmarkPriorityPop(b *testing.B) { - l := loadTestData() +// l := loadTestData() - pq := New(compare.Int) - for _, v := range l { - pq.Push(v) - } +// pq := New(compare.Int) +// for _, v := range l { +// pq.Push(v) +// } - b.N = len(l) - b.ResetTimer() - b.StartTimer() +// b.N = len(l) +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < b.N; i++ { - pq.Pop() - } -} +// for i := 0; i < b.N; i++ { +// pq.Pop() +// } +// } diff --git a/priority_queue/vbt_test.go b/priority_queue/vbt_test.go index 89f41d0..af2e593 100644 --- a/priority_queue/vbt_test.go +++ b/priority_queue/vbt_test.go @@ -8,12 +8,8 @@ import ( "testing" "github.com/474420502/focus/compare" - "github.com/huandu/skiplist" - "github.com/Pallinder/go-randomdata" "github.com/davecgh/go-spew/spew" - "github.com/emirpasic/gods/trees/avltree" - "github.com/emirpasic/gods/trees/redblacktree" ) func loadTestData() []int { @@ -178,35 +174,35 @@ func TestPutStable(t *testing.T) { } -func TestPutComparatorRandom(t *testing.T) { +// func TestPutComparatorRandom(t *testing.T) { - for n := 0; n < 30000; n++ { - tree := newVBT(compare.Int) - godsavl := avltree.NewWithIntComparator() +// for n := 0; n < 30000; n++ { +// tree := newVBT(compare.Int) +// godsavl := avltree.NewWithIntComparator() - content := "" - m := make(map[int]int) - for i := 0; len(m) < 50; i++ { - v := randomdata.Number(0, 65535) - if _, ok := m[v]; !ok { - m[v] = v - content += spew.Sprint(v) + "," - tree.Put(v) - godsavl.Put(v, v) - } - } +// content := "" +// m := make(map[int]int) +// for i := 0; len(m) < 50; i++ { +// v := randomdata.Number(0, 65535) +// if _, ok := m[v]; !ok { +// m[v] = v +// content += spew.Sprint(v) + "," +// tree.Put(v) +// godsavl.Put(v, v) +// } +// } - s1 := spew.Sprint(tree.Values()) - s2 := spew.Sprint(godsavl.Values()) +// s1 := spew.Sprint(tree.Values()) +// s2 := spew.Sprint(godsavl.Values()) - if s1 != s2 { - t.Error(godsavl.String()) - t.Error(tree.debugString()) - t.Error(content, n) - break - } - } -} +// if s1 != s2 { +// t.Error(godsavl.String()) +// t.Error(tree.debugString()) +// t.Error(content, n) +// break +// } +// } +// } func TestGet(t *testing.T) { tree := newVBT(compare.Int) @@ -306,351 +302,351 @@ func TestTravalsal(t *testing.T) { } -func TestRemoveAll(t *testing.T) { -ALL: - for c := 0; c < 20000; c++ { - tree := newVBT(compare.Int) - gods := avltree.NewWithIntComparator() - var l []int - m := make(map[int]int) - - for i := 0; len(l) < 50; i++ { - v := randomdata.Number(0, 65535) - if _, ok := m[v]; !ok { - m[v] = v - l = append(l, v) - tree.Put(v) - gods.Put(v, v) - } - } - - for i := 0; i < 50; i++ { - tree.Remove(l[i]) - gods.Remove(l[i]) - - s1 := spew.Sprint(tree.Values()) - s2 := spew.Sprint(gods.Values()) - if s1 != s2 { - t.Error("avl remove error", "avlsize = ", tree.Size()) - t.Error(tree.root, i, l[i]) - t.Error(s1) - t.Error(s2) - break ALL - } - } - } -} - -func TestRemove(t *testing.T) { - -ALL: - for N := 0; N < 5000; N++ { - tree := newVBT(compare.Int) - gods := avltree.NewWithIntComparator() - - var l []int - m := make(map[int]int) - - for i := 0; len(l) < 20; i++ { - v := randomdata.Number(0, 100) - if _, ok := m[v]; !ok { - l = append(l, v) - m[v] = v - tree.Put(v) - gods.Put(v, v) - } - } - - src1 := tree.String() - src2 := gods.String() - - for i := 0; i < 20; i++ { - tree.Remove(l[i]) - gods.Remove(l[i]) - if tree.root != nil && spew.Sprint(gods.Values()) != spew.Sprint(tree.Values()) { - t.Error(src1) - t.Error(src2) - t.Error(tree.debugString()) - t.Error(gods.String()) - t.Error(l[i]) - break ALL - } - } - } -} - -func BenchmarkSkipListGet(b *testing.B) { - sl := skiplist.New(skiplist.Int) - l := loadTestData() - b.N = len(l) - - for _, v := range l { - sl.Set(v, v) - } - - b.ResetTimer() - b.StartTimer() - - execCount := 5 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for _, v := range l { - e := sl.Get(v) - var result [50]interface{} - for i := 0; i < 50 && e != nil; i++ { - result[i] = e.Value - e = e.Next() - } - } - } -} - -func BenchmarkGetRange(b *testing.B) { - -} - -func BenchmarkIndexRange(b *testing.B) { - tree := newVBT(compare.Int) - l := loadTestData() - b.N = len(l) - - for _, v := range l { - tree.Put(v) - } - - b.ResetTimer() - b.StartTimer() - - execCount := 5 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for range l { - tree.IndexRange(i, i+49) - } - } -} - -func BenchmarkSkipListSet(b *testing.B) { - - l := loadTestData() - - execCount := 1 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - sl := skiplist.New(skiplist.Int) - for _, v := range l { - sl.Set(v, v) - } - } -} - -func BenchmarkIterator(b *testing.B) { - tree := newVBT(compare.Int) - - l := loadTestData() - b.N = len(l) - - for _, v := range l { - tree.Put(v) - } - - b.ResetTimer() - b.StartTimer() - iter := tree.Iterator() - b.N = 0 - for iter.Next() { - b.N++ - } - for iter.Prev() { - b.N++ - } - for iter.Next() { - b.N++ - } - b.Log(b.N, len(l)) -} - -func BenchmarkRemove(b *testing.B) { - tree := newVBT(compare.Int) - - l := loadTestData() - - b.N = len(l) - for _, v := range l { - tree.Put(v) - } - - b.ResetTimer() - b.StartTimer() - - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} - -func BenchmarkGodsRemove(b *testing.B) { - tree := avltree.NewWithIntComparator() - - l := loadTestData() - - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } - - b.ResetTimer() - b.StartTimer() - - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} - -func BenchmarkGodsRBRemove(b *testing.B) { - tree := redblacktree.NewWithIntComparator() - - l := loadTestData() - - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } - - b.ResetTimer() - b.StartTimer() - - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} - -func BenchmarkGet(b *testing.B) { - - tree := newVBT(compare.Int) - - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i]) - } - - b.ResetTimer() - b.StartTimer() - - execCount := 5 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} - -func BenchmarkGodsRBGet(b *testing.B) { - tree := redblacktree.NewWithIntComparator() - - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i], i) - } - - b.ResetTimer() - b.StartTimer() - - execCount := 10 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} +// func TestRemoveAll(t *testing.T) { +// ALL: +// for c := 0; c < 20000; c++ { +// tree := newVBT(compare.Int) +// gods := avltree.NewWithIntComparator() +// var l []int +// m := make(map[int]int) + +// for i := 0; len(l) < 50; i++ { +// v := randomdata.Number(0, 65535) +// if _, ok := m[v]; !ok { +// m[v] = v +// l = append(l, v) +// tree.Put(v) +// gods.Put(v, v) +// } +// } + +// for i := 0; i < 50; i++ { +// tree.Remove(l[i]) +// gods.Remove(l[i]) + +// s1 := spew.Sprint(tree.Values()) +// s2 := spew.Sprint(gods.Values()) +// if s1 != s2 { +// t.Error("avl remove error", "avlsize = ", tree.Size()) +// t.Error(tree.root, i, l[i]) +// t.Error(s1) +// t.Error(s2) +// break ALL +// } +// } +// } +// } + +// func TestRemove(t *testing.T) { + +// ALL: +// for N := 0; N < 5000; N++ { +// tree := newVBT(compare.Int) +// gods := avltree.NewWithIntComparator() + +// var l []int +// m := make(map[int]int) + +// for i := 0; len(l) < 20; i++ { +// v := randomdata.Number(0, 100) +// if _, ok := m[v]; !ok { +// l = append(l, v) +// m[v] = v +// tree.Put(v) +// gods.Put(v, v) +// } +// } + +// src1 := tree.String() +// src2 := gods.String() + +// for i := 0; i < 20; i++ { +// tree.Remove(l[i]) +// gods.Remove(l[i]) +// if tree.root != nil && spew.Sprint(gods.Values()) != spew.Sprint(tree.Values()) { +// t.Error(src1) +// t.Error(src2) +// t.Error(tree.debugString()) +// t.Error(gods.String()) +// t.Error(l[i]) +// break ALL +// } +// } +// } +// } + +// func BenchmarkSkipListGet(b *testing.B) { +// sl := skiplist.New(skiplist.Int) +// l := loadTestData() +// b.N = len(l) + +// for _, v := range l { +// sl.Set(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 5 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// e := sl.Get(v) +// var result [50]interface{} +// for i := 0; i < 50 && e != nil; i++ { +// result[i] = e.Value +// e = e.Next() +// } +// } +// } +// } + +// func BenchmarkGetRange(b *testing.B) { + +// } + +// func BenchmarkIndexRange(b *testing.B) { +// tree := newVBT(compare.Int) +// l := loadTestData() +// b.N = len(l) + +// for _, v := range l { +// tree.Put(v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 5 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for range l { +// tree.IndexRange(i, i+49) +// } +// } +// } + +// func BenchmarkSkipListSet(b *testing.B) { + +// l := loadTestData() + +// execCount := 1 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// sl := skiplist.New(skiplist.Int) +// for _, v := range l { +// sl.Set(v, v) +// } +// } +// } + +// func BenchmarkIterator(b *testing.B) { +// tree := newVBT(compare.Int) + +// l := loadTestData() +// b.N = len(l) + +// for _, v := range l { +// tree.Put(v) +// } + +// b.ResetTimer() +// b.StartTimer() +// iter := tree.Iterator() +// b.N = 0 +// for iter.Next() { +// b.N++ +// } +// for iter.Prev() { +// b.N++ +// } +// for iter.Next() { +// b.N++ +// } +// b.Log(b.N, len(l)) +// } + +// func BenchmarkRemove(b *testing.B) { +// tree := newVBT(compare.Int) + +// l := loadTestData() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } + +// func BenchmarkGodsRemove(b *testing.B) { +// tree := avltree.NewWithIntComparator() + +// l := loadTestData() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } + +// func BenchmarkGodsRBRemove(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() + +// l := loadTestData() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } + +// func BenchmarkGet(b *testing.B) { + +// tree := newVBT(compare.Int) + +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i]) +// } + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 5 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } + +// func BenchmarkGodsRBGet(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() + +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i], i) +// } + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 10 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } -func BenchmarkGodsAvlGet(b *testing.B) { - tree := avltree.NewWithIntComparator() +// func BenchmarkGodsAvlGet(b *testing.B) { +// tree := avltree.NewWithIntComparator() - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i], i) - } +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i], i) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - execCount := 10 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} +// execCount := 10 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } -func BenchmarkPut(b *testing.B) { - l := loadTestData() - - b.ResetTimer() - b.StartTimer() +// func BenchmarkPut(b *testing.B) { +// l := loadTestData() + +// b.ResetTimer() +// b.StartTimer() - execCount := 50 - b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - tree := newVBT(compare.Int) - for _, v := range l { - tree.Put(v) - } - } -} - -func BenchmarkIndex(b *testing.B) { - tree := newVBT(compare.Int) - - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i]) - } - - b.ResetTimer() - b.StartTimer() - - for i := 0; i < b.N; i++ { - tree.Index(i) - } -} - -func BenchmarkGodsRBPut(b *testing.B) { - tree := redblacktree.NewWithIntComparator() - - l := loadTestData() - - b.ResetTimer() - b.StartTimer() - - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } -} - -func BenchmarkGodsPut(b *testing.B) { - tree := avltree.NewWithIntComparator() - - l := loadTestData() - - b.ResetTimer() - b.StartTimer() - - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } -} +// execCount := 50 +// b.N = len(l) * execCount +// for i := 0; i < execCount; i++ { +// tree := newVBT(compare.Int) +// for _, v := range l { +// tree.Put(v) +// } +// } +// } + +// func BenchmarkIndex(b *testing.B) { +// tree := newVBT(compare.Int) + +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i]) +// } + +// b.ResetTimer() +// b.StartTimer() + +// for i := 0; i < b.N; i++ { +// tree.Index(i) +// } +// } + +// func BenchmarkGodsRBPut(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() + +// l := loadTestData() + +// b.ResetTimer() +// b.StartTimer() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } +// } + +// func BenchmarkGodsPut(b *testing.B) { +// tree := avltree.NewWithIntComparator() + +// l := loadTestData() + +// b.ResetTimer() +// b.StartTimer() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } +// } diff --git a/priority_queuekey/priority_queuekey_test.go b/priority_queuekey/priority_queuekey_test.go index 703b72f..1429da5 100644 --- a/priority_queuekey/priority_queuekey_test.go +++ b/priority_queuekey/priority_queuekey_test.go @@ -242,106 +242,106 @@ func TestQueueIndex(t *testing.T) { } } -func BenchmarkQueueGet(b *testing.B) { +// func BenchmarkQueueGet(b *testing.B) { - l := loadTestData() +// l := loadTestData() - pq := New(compare.Int) - for _, v := range l { - pq.Push(v, v) - } +// pq := New(compare.Int) +// for _, v := range l { +// pq.Push(v, v) +// } - execCount := 5 - b.N = len(l) * execCount +// execCount := 5 +// b.N = len(l) * execCount - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() -ALL: - for i := 0; i < execCount; i++ { - for _, v := range l { - if gv, ok := pq.Get(v); !ok { - b.Error(gv) - break ALL - } - } - } -} +// ALL: +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// if gv, ok := pq.Get(v); !ok { +// b.Error(gv) +// break ALL +// } +// } +// } +// } -func BenchmarkQueueRemove(b *testing.B) { - l := loadTestData() +// func BenchmarkQueueRemove(b *testing.B) { +// l := loadTestData() - pq := New(compare.Int) - for _, v := range l { - pq.Push(v, v) - } +// pq := New(compare.Int) +// for _, v := range l { +// pq.Push(v, v) +// } - b.N = len(l) - b.ResetTimer() - b.StartTimer() +// b.N = len(l) +// b.ResetTimer() +// b.StartTimer() - for _, v := range l { - pq.Remove(v) - } -} +// for _, v := range l { +// pq.Remove(v) +// } +// } -func BenchmarkQueueIndex(b *testing.B) { +// func BenchmarkQueueIndex(b *testing.B) { - l := loadTestData() +// l := loadTestData() - pq := New(compare.Int) - for _, v := range l { - pq.Push(v, v) - } +// pq := New(compare.Int) +// for _, v := range l { +// pq.Push(v, v) +// } - execCount := 2 - b.N = len(l) * execCount +// execCount := 2 +// b.N = len(l) * execCount - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() -ALL: - for i := 0; i < execCount; i++ { - for idx := range l { - if v, ok := pq.Index(idx); !ok { - b.Error(v) - break ALL - } - } - } -} +// ALL: +// for i := 0; i < execCount; i++ { +// for idx := range l { +// if v, ok := pq.Index(idx); !ok { +// b.Error(v) +// break ALL +// } +// } +// } +// } -func BenchmarkPriorityPush(b *testing.B) { +// func BenchmarkPriorityPush(b *testing.B) { - l := loadTestData() - execCount := 5 - b.N = len(l) * execCount +// l := loadTestData() +// execCount := 5 +// b.N = len(l) * execCount - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < execCount; i++ { - pq := New(compare.Int) - for _, v := range l { - pq.Push(v, v) - } - } -} +// for i := 0; i < execCount; i++ { +// pq := New(compare.Int) +// for _, v := range l { +// pq.Push(v, v) +// } +// } +// } -func BenchmarkPriorityPop(b *testing.B) { +// func BenchmarkPriorityPop(b *testing.B) { - l := loadTestData() +// l := loadTestData() - pq := New(compare.Int) - for _, v := range l { - pq.Push(v, v) - } +// pq := New(compare.Int) +// for _, v := range l { +// pq.Push(v, v) +// } - b.N = len(l) - b.ResetTimer() - b.StartTimer() +// b.N = len(l) +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < b.N; i++ { - pq.Pop() - } -} +// for i := 0; i < b.N; i++ { +// pq.Pop() +// } +// } diff --git a/priority_queuekey/vbt_test.go b/priority_queuekey/vbt_test.go index ffc574d..4c8f671 100644 --- a/priority_queuekey/vbt_test.go +++ b/priority_queuekey/vbt_test.go @@ -8,12 +8,8 @@ import ( "testing" "github.com/474420502/focus/compare" - "github.com/huandu/skiplist" - "github.com/Pallinder/go-randomdata" "github.com/davecgh/go-spew/spew" - "github.com/emirpasic/gods/trees/avltree" - "github.com/emirpasic/gods/trees/redblacktree" ) func loadTestData() []int { @@ -178,35 +174,35 @@ func TestPutStable(t *testing.T) { } -func TestPutComparatorRandom(t *testing.T) { +// func TestPutComparatorRandom(t *testing.T) { - for n := 0; n < 30000; n++ { - tree := newVBT(compare.Int) - godsavl := avltree.NewWithIntComparator() +// for n := 0; n < 30000; n++ { +// tree := newVBT(compare.Int) +// godsavl := avltree.NewWithIntComparator() - content := "" - m := make(map[int]int) - for i := 0; len(m) < 50; i++ { - v := randomdata.Number(0, 65535) - if _, ok := m[v]; !ok { - m[v] = v - content += spew.Sprint(v) + "," - tree.Put(v, v) - godsavl.Put(v, v) - } - } +// content := "" +// m := make(map[int]int) +// for i := 0; len(m) < 50; i++ { +// v := randomdata.Number(0, 65535) +// if _, ok := m[v]; !ok { +// m[v] = v +// content += spew.Sprint(v) + "," +// tree.Put(v, v) +// godsavl.Put(v, v) +// } +// } - s1 := spew.Sprint(tree.Values()) - s2 := spew.Sprint(godsavl.Values()) +// s1 := spew.Sprint(tree.Values()) +// s2 := spew.Sprint(godsavl.Values()) - if s1 != s2 { - t.Error(godsavl.String()) - t.Error(tree.debugString()) - t.Error(content, n) - break - } - } -} +// if s1 != s2 { +// t.Error(godsavl.String()) +// t.Error(tree.debugString()) +// t.Error(content, n) +// break +// } +// } +// } func TestGet(t *testing.T) { tree := newVBT(compare.Int) @@ -306,351 +302,351 @@ func TestTravalsal(t *testing.T) { } -func TestRemoveAll(t *testing.T) { -ALL: - for c := 0; c < 20000; c++ { - tree := newVBT(compare.Int) - gods := avltree.NewWithIntComparator() - var l []int - m := make(map[int]int) - - for i := 0; len(l) < 50; i++ { - v := randomdata.Number(0, 65535) - if _, ok := m[v]; !ok { - m[v] = v - l = append(l, v) - tree.Put(v, v) - gods.Put(v, v) - } - } - - for i := 0; i < 50; i++ { - tree.Remove(l[i]) - gods.Remove(l[i]) - - s1 := spew.Sprint(tree.Values()) - s2 := spew.Sprint(gods.Values()) - if s1 != s2 { - t.Error("avl remove error", "avlsize = ", tree.Size()) - t.Error(tree.root, i, l[i]) - t.Error(s1) - t.Error(s2) - break ALL - } - } - } -} - -func TestRemove(t *testing.T) { - -ALL: - for N := 0; N < 5000; N++ { - tree := newVBT(compare.Int) - gods := avltree.NewWithIntComparator() - - var l []int - m := make(map[int]int) - - for i := 0; len(l) < 20; i++ { - v := randomdata.Number(0, 100) - if _, ok := m[v]; !ok { - l = append(l, v) - m[v] = v - tree.Put(v, v) - gods.Put(v, v) - } - } - - src1 := tree.String() - src2 := gods.String() - - for i := 0; i < 20; i++ { - tree.Remove(l[i]) - gods.Remove(l[i]) - if tree.root != nil && spew.Sprint(gods.Values()) != spew.Sprint(tree.Values()) { - t.Error(src1) - t.Error(src2) - t.Error(tree.debugString()) - t.Error(gods.String()) - t.Error(l[i]) - break ALL - } - } - } -} - -func BenchmarkSkipListGet(b *testing.B) { - sl := skiplist.New(skiplist.Int) - l := loadTestData() - b.N = len(l) - - for _, v := range l { - sl.Set(v, v) - } - - b.ResetTimer() - b.StartTimer() - - execCount := 5 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for _, v := range l { - e := sl.Get(v) - var result [50]interface{} - for i := 0; i < 50 && e != nil; i++ { - result[i] = e.Value - e = e.Next() - } - } - } -} - -func BenchmarkGetRange(b *testing.B) { - -} - -func BenchmarkIndexRange(b *testing.B) { - tree := newVBT(compare.Int) - l := loadTestData() - b.N = len(l) - - for _, v := range l { - tree.Put(v, v) - } - - b.ResetTimer() - b.StartTimer() - - execCount := 5 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for range l { - tree.IndexRange(i, i+49) - } - } -} - -func BenchmarkSkipListSet(b *testing.B) { - - l := loadTestData() - - execCount := 1 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - sl := skiplist.New(skiplist.Int) - for _, v := range l { - sl.Set(v, v) - } - } -} - -func BenchmarkIterator(b *testing.B) { - tree := newVBT(compare.Int) - - l := loadTestData() - b.N = len(l) - - for _, v := range l { - tree.Put(v, v) - } - - b.ResetTimer() - b.StartTimer() - iter := tree.Iterator() - b.N = 0 - for iter.Next() { - b.N++ - } - for iter.Prev() { - b.N++ - } - for iter.Next() { - b.N++ - } - b.Log(b.N, len(l)) -} - -func BenchmarkRemove(b *testing.B) { - tree := newVBT(compare.Int) - - l := loadTestData() - - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } - - b.ResetTimer() - b.StartTimer() - - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} - -func BenchmarkGodsRemove(b *testing.B) { - tree := avltree.NewWithIntComparator() - - l := loadTestData() - - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } - - b.ResetTimer() - b.StartTimer() - - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} - -func BenchmarkGodsRBRemove(b *testing.B) { - tree := redblacktree.NewWithIntComparator() - - l := loadTestData() - - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } - - b.ResetTimer() - b.StartTimer() - - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} - -func BenchmarkGet(b *testing.B) { - - tree := newVBT(compare.Int) - - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i], l[i]) - } - - b.ResetTimer() - b.StartTimer() - - execCount := 5 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} - -func BenchmarkGodsRBGet(b *testing.B) { - tree := redblacktree.NewWithIntComparator() - - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i], i) - } - - b.ResetTimer() - b.StartTimer() - - execCount := 10 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} +// func TestRemoveAll(t *testing.T) { +// ALL: +// for c := 0; c < 20000; c++ { +// tree := newVBT(compare.Int) +// gods := avltree.NewWithIntComparator() +// var l []int +// m := make(map[int]int) + +// for i := 0; len(l) < 50; i++ { +// v := randomdata.Number(0, 65535) +// if _, ok := m[v]; !ok { +// m[v] = v +// l = append(l, v) +// tree.Put(v, v) +// gods.Put(v, v) +// } +// } + +// for i := 0; i < 50; i++ { +// tree.Remove(l[i]) +// gods.Remove(l[i]) + +// s1 := spew.Sprint(tree.Values()) +// s2 := spew.Sprint(gods.Values()) +// if s1 != s2 { +// t.Error("avl remove error", "avlsize = ", tree.Size()) +// t.Error(tree.root, i, l[i]) +// t.Error(s1) +// t.Error(s2) +// break ALL +// } +// } +// } +// } + +// func TestRemove(t *testing.T) { + +// ALL: +// for N := 0; N < 5000; N++ { +// tree := newVBT(compare.Int) +// gods := avltree.NewWithIntComparator() + +// var l []int +// m := make(map[int]int) + +// for i := 0; len(l) < 20; i++ { +// v := randomdata.Number(0, 100) +// if _, ok := m[v]; !ok { +// l = append(l, v) +// m[v] = v +// tree.Put(v, v) +// gods.Put(v, v) +// } +// } + +// src1 := tree.String() +// src2 := gods.String() + +// for i := 0; i < 20; i++ { +// tree.Remove(l[i]) +// gods.Remove(l[i]) +// if tree.root != nil && spew.Sprint(gods.Values()) != spew.Sprint(tree.Values()) { +// t.Error(src1) +// t.Error(src2) +// t.Error(tree.debugString()) +// t.Error(gods.String()) +// t.Error(l[i]) +// break ALL +// } +// } +// } +// } + +// func BenchmarkSkipListGet(b *testing.B) { +// sl := skiplist.New(skiplist.Int) +// l := loadTestData() +// b.N = len(l) + +// for _, v := range l { +// sl.Set(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 5 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// e := sl.Get(v) +// var result [50]interface{} +// for i := 0; i < 50 && e != nil; i++ { +// result[i] = e.Value +// e = e.Next() +// } +// } +// } +// } + +// func BenchmarkGetRange(b *testing.B) { + +// } + +// func BenchmarkIndexRange(b *testing.B) { +// tree := newVBT(compare.Int) +// l := loadTestData() +// b.N = len(l) + +// for _, v := range l { +// tree.Put(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 5 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for range l { +// tree.IndexRange(i, i+49) +// } +// } +// } + +// func BenchmarkSkipListSet(b *testing.B) { + +// l := loadTestData() + +// execCount := 1 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// sl := skiplist.New(skiplist.Int) +// for _, v := range l { +// sl.Set(v, v) +// } +// } +// } + +// func BenchmarkIterator(b *testing.B) { +// tree := newVBT(compare.Int) + +// l := loadTestData() +// b.N = len(l) + +// for _, v := range l { +// tree.Put(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() +// iter := tree.Iterator() +// b.N = 0 +// for iter.Next() { +// b.N++ +// } +// for iter.Prev() { +// b.N++ +// } +// for iter.Next() { +// b.N++ +// } +// b.Log(b.N, len(l)) +// } + +// func BenchmarkRemove(b *testing.B) { +// tree := newVBT(compare.Int) + +// l := loadTestData() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } + +// func BenchmarkGodsRemove(b *testing.B) { +// tree := avltree.NewWithIntComparator() + +// l := loadTestData() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } + +// func BenchmarkGodsRBRemove(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() + +// l := loadTestData() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } + +// func BenchmarkGet(b *testing.B) { + +// tree := newVBT(compare.Int) + +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i], l[i]) +// } + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 5 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } + +// func BenchmarkGodsRBGet(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() + +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i], i) +// } + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 10 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } -func BenchmarkGodsAvlGet(b *testing.B) { - tree := avltree.NewWithIntComparator() +// func BenchmarkGodsAvlGet(b *testing.B) { +// tree := avltree.NewWithIntComparator() - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i], i) - } +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i], i) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - execCount := 10 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} +// execCount := 10 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } -func BenchmarkPut(b *testing.B) { - l := loadTestData() - - b.ResetTimer() - b.StartTimer() +// func BenchmarkPut(b *testing.B) { +// l := loadTestData() + +// b.ResetTimer() +// b.StartTimer() - execCount := 50 - b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - tree := newVBT(compare.Int) - for _, v := range l { - tree.Put(v, v) - } - } -} - -func BenchmarkIndex(b *testing.B) { - tree := newVBT(compare.Int) - - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i], l[i]) - } - - b.ResetTimer() - b.StartTimer() - - for i := 0; i < b.N; i++ { - tree.Index(i) - } -} - -func BenchmarkGodsRBPut(b *testing.B) { - tree := redblacktree.NewWithIntComparator() - - l := loadTestData() - - b.ResetTimer() - b.StartTimer() - - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } -} - -func BenchmarkGodsPut(b *testing.B) { - tree := avltree.NewWithIntComparator() - - l := loadTestData() - - b.ResetTimer() - b.StartTimer() - - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } -} +// execCount := 50 +// b.N = len(l) * execCount +// for i := 0; i < execCount; i++ { +// tree := newVBT(compare.Int) +// for _, v := range l { +// tree.Put(v, v) +// } +// } +// } + +// func BenchmarkIndex(b *testing.B) { +// tree := newVBT(compare.Int) + +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i], l[i]) +// } + +// b.ResetTimer() +// b.StartTimer() + +// for i := 0; i < b.N; i++ { +// tree.Index(i) +// } +// } + +// func BenchmarkGodsRBPut(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() + +// l := loadTestData() + +// b.ResetTimer() +// b.StartTimer() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } +// } + +// func BenchmarkGodsPut(b *testing.B) { +// tree := avltree.NewWithIntComparator() + +// l := loadTestData() + +// b.ResetTimer() +// b.StartTimer() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } +// } diff --git a/sparse_array/array2/array2_test.go b/sparse_array/array2/array2_test.go index ac05cfd..47fa7fa 100644 --- a/sparse_array/array2/array2_test.go +++ b/sparse_array/array2/array2_test.go @@ -4,8 +4,6 @@ import ( "testing" "github.com/davecgh/go-spew/spew" - - "github.com/Pallinder/go-randomdata" ) func testSet1(t *testing.T) { @@ -191,58 +189,58 @@ func TestArray2Grow(t *testing.T) { } } -func BenchmarkArray2Set(b *testing.B) { +// func BenchmarkArray2Set(b *testing.B) { - arr := NewWithCap(1000, 100) - b.N = 500000000 +// arr := NewWithCap(1000, 100) +// b.N = 500000000 - b.StopTimer() - var l []int - for i := 0; i < b.N/10; i++ { - l = append(l, randomdata.Number(0, 65535)) - } - b.StartTimer() - for c := 0; c < 10; c++ { - for i := 0; i < b.N/10; i++ { - arr.Set(l[i], i) - } - } +// b.StopTimer() +// var l []int +// for i := 0; i < b.N/10; i++ { +// l = append(l, randomdata.Number(0, 65535)) +// } +// b.StartTimer() +// for c := 0; c < 10; c++ { +// for i := 0; i < b.N/10; i++ { +// arr.Set(l[i], i) +// } +// } -} +// } -func BenchmarkArray2Get(b *testing.B) { +// func BenchmarkArray2Get(b *testing.B) { - arr := NewWithCap(1000, 100) - b.N = 500000000 +// arr := NewWithCap(1000, 100) +// b.N = 500000000 - b.StopTimer() +// b.StopTimer() - for i := 0; i < 105535; i++ { - v := randomdata.Number(0, 65535) - arr.Set(v, v) - } - b.StartTimer() +// for i := 0; i < 105535; i++ { +// v := randomdata.Number(0, 65535) +// arr.Set(v, v) +// } +// b.StartTimer() - for i := 0; i < b.N; i++ { - arr.Get(i % 65535) - } +// for i := 0; i < b.N; i++ { +// arr.Get(i % 65535) +// } -} +// } -func BenchmarkArray2Del(b *testing.B) { +// func BenchmarkArray2Del(b *testing.B) { - arr := NewWithCap(1000, 100) - b.N = 500000000 +// arr := NewWithCap(1000, 100) +// b.N = 500000000 - b.StopTimer() - for i := 0; i < 105535; i++ { - v := randomdata.Number(0, 65535) - arr.Set(v, v) - } - b.StartTimer() +// b.StopTimer() +// for i := 0; i < 105535; i++ { +// v := randomdata.Number(0, 65535) +// arr.Set(v, v) +// } +// b.StartTimer() - for i := 0; i < b.N; i++ { - arr.Del(i % 65535) - } +// for i := 0; i < b.N; i++ { +// arr.Del(i % 65535) +// } -} +// } diff --git a/sparse_array/array3/array3_test.go b/sparse_array/array3/array3_test.go index 8105cc3..4af36d7 100644 --- a/sparse_array/array3/array3_test.go +++ b/sparse_array/array3/array3_test.go @@ -4,8 +4,6 @@ import ( "testing" "github.com/davecgh/go-spew/spew" - - "github.com/Pallinder/go-randomdata" ) func testSet1(t *testing.T) { @@ -161,55 +159,55 @@ func TestArray2Del(t *testing.T) { arr.Del(18) } -func BenchmarkArray3Set(b *testing.B) { +// func BenchmarkArray3Set(b *testing.B) { - arr := NewWithCap(100, 100, 10) - b.N = 500000000 +// arr := NewWithCap(100, 100, 10) +// b.N = 500000000 - b.StopTimer() - var l []int - for i := 0; i < b.N/10; i++ { - l = append(l, randomdata.Number(0, 65535)) - } - b.StartTimer() - for c := 0; c < 10; c++ { - for i := 0; i < b.N/10; i++ { - arr.Set(l[i], i) - } - } -} +// b.StopTimer() +// var l []int +// for i := 0; i < b.N/10; i++ { +// l = append(l, randomdata.Number(0, 65535)) +// } +// b.StartTimer() +// for c := 0; c < 10; c++ { +// for i := 0; i < b.N/10; i++ { +// arr.Set(l[i], i) +// } +// } +// } -func BenchmarkArray3Get(b *testing.B) { +// func BenchmarkArray3Get(b *testing.B) { - arr := NewWithCap(100, 100, 10) - b.N = 500000000 +// arr := NewWithCap(100, 100, 10) +// b.N = 500000000 - b.StopTimer() +// b.StopTimer() - for i := 0; i < 105535; i++ { - v := randomdata.Number(0, 65535) - arr.Set(v, v) - } - b.StartTimer() +// for i := 0; i < 105535; i++ { +// v := randomdata.Number(0, 65535) +// arr.Set(v, v) +// } +// b.StartTimer() - for i := 0; i < b.N; i++ { - arr.Get(i % 65535) - } -} +// for i := 0; i < b.N; i++ { +// arr.Get(i % 65535) +// } +// } -func BenchmarkArray3Del(b *testing.B) { +// func BenchmarkArray3Del(b *testing.B) { - arr := NewWithCap(100, 100, 10) - b.N = 500000000 +// arr := NewWithCap(100, 100, 10) +// b.N = 500000000 - b.StopTimer() - for i := 0; i < 105535; i++ { - v := randomdata.Number(0, 65535) - arr.Set(v, v) - } - b.StartTimer() +// b.StopTimer() +// for i := 0; i < 105535; i++ { +// v := randomdata.Number(0, 65535) +// arr.Set(v, v) +// } +// b.StartTimer() - for i := 0; i < b.N; i++ { - arr.Del(i % 65535) - } -} +// for i := 0; i < b.N; i++ { +// arr.Del(i % 65535) +// } +// } diff --git a/sparse_array/arrayn/arrayn_test.go b/sparse_array/arrayn/arrayn_test.go index 4da1a5d..7447d36 100644 --- a/sparse_array/arrayn/arrayn_test.go +++ b/sparse_array/arrayn/arrayn_test.go @@ -3,7 +3,6 @@ package arrayn import ( "testing" - "github.com/Pallinder/go-randomdata" "github.com/davecgh/go-spew/spew" ) @@ -171,54 +170,54 @@ func TestArray2Grow(t *testing.T) { } } -func BenchmarkGoMap(b *testing.B) { - m := make(map[int]bool) - b.N = 50000000 - b.StopTimer() - var l []int - for i := 0; i < b.N/10; i++ { - l = append(l, randomdata.Number(0, 100000000)) - } - b.StartTimer() - for c := 0; c < 10; c++ { - for i := 0; i < b.N/10; i++ { - m[l[i]] = true - } - } -} +// func BenchmarkGoMap(b *testing.B) { +// m := make(map[int]bool) +// b.N = 50000000 +// b.StopTimer() +// var l []int +// for i := 0; i < b.N/10; i++ { +// l = append(l, randomdata.Number(0, 100000000)) +// } +// b.StartTimer() +// for c := 0; c < 10; c++ { +// for i := 0; i < b.N/10; i++ { +// m[l[i]] = true +// } +// } +// } -func BenchmarkArrayNSet(b *testing.B) { +// func BenchmarkArrayNSet(b *testing.B) { - arr := NewWithCap(1000, 10, 10, 100) - b.N = 10000000 +// arr := NewWithCap(1000, 10, 10, 100) +// b.N = 10000000 - b.StopTimer() - var l []int - for i := 0; i < b.N/10; i++ { - l = append(l, randomdata.Number(0, 10000000)) - } - b.StartTimer() - for c := 0; c < 10; c++ { - for i := 0; i < b.N/10; i++ { - arr.Set(l[i], i) - } - } -} +// b.StopTimer() +// var l []int +// for i := 0; i < b.N/10; i++ { +// l = append(l, randomdata.Number(0, 10000000)) +// } +// b.StartTimer() +// for c := 0; c < 10; c++ { +// for i := 0; i < b.N/10; i++ { +// arr.Set(l[i], i) +// } +// } +// } -func BenchmarkArray3Set(b *testing.B) { +// func BenchmarkArray3Set(b *testing.B) { - arr := NewWithCap(100, 100, 10) - b.N = 500000000 +// arr := NewWithCap(100, 100, 10) +// b.N = 500000000 - b.StopTimer() - var l []int - for i := 0; i < b.N/10; i++ { - l = append(l, randomdata.Number(0, 65535)) - } - b.StartTimer() - for c := 0; c < 10; c++ { - for i := 0; i < b.N/10; i++ { - arr.Set(l[i], i) - } - } -} +// b.StopTimer() +// var l []int +// for i := 0; i < b.N/10; i++ { +// l = append(l, randomdata.Number(0, 65535)) +// } +// b.StartTimer() +// for c := 0; c < 10; c++ { +// for i := 0; i < b.N/10; i++ { +// arr.Set(l[i], i) +// } +// } +// } diff --git a/stack/stack_test.go b/stack/stack_test.go index 57b3e4c..6571ffa 100644 --- a/stack/stack_test.go +++ b/stack/stack_test.go @@ -1,91 +1,83 @@ package lastack -import ( - "testing" +// func BenchmarkPush(b *testing.B) { +// s := New() +// b.N = 200000 +// for i := 0; i < b.N; i++ { +// v := randomdata.Number(0, 65535) +// s.Push(v) +// } +// } - "github.com/emirpasic/gods/stacks/arraystack" +// func BenchmarkGodsPush(b *testing.B) { +// s := arraystack.New() +// b.N = 200000 +// for i := 0; i < b.N; i++ { +// v := randomdata.Number(0, 65535) +// s.Push(v) +// } +// } - "github.com/Pallinder/go-randomdata" -) +// func BenchmarkPop(b *testing.B) { +// s := New() +// b.N = 200000 -func BenchmarkPush(b *testing.B) { - s := New() - b.N = 200000 - for i := 0; i < b.N; i++ { - v := randomdata.Number(0, 65535) - s.Push(v) - } -} +// for i := 0; i < b.N; i++ { +// v := randomdata.Number(0, 65535) +// s.Push(v) +// } -func BenchmarkGodsPush(b *testing.B) { - s := arraystack.New() - b.N = 200000 - for i := 0; i < b.N; i++ { - v := randomdata.Number(0, 65535) - s.Push(v) - } -} +// b.ResetTimer() +// b.StartTimer() -func BenchmarkPop(b *testing.B) { - s := New() - b.N = 200000 +// for i := 0; i < b.N; i++ { +// s.Pop() +// } +// } - for i := 0; i < b.N; i++ { - v := randomdata.Number(0, 65535) - s.Push(v) - } +// func BenchmarkGodsPop(b *testing.B) { +// s := arraystack.New() +// b.N = 200000 - b.ResetTimer() - b.StartTimer() +// for i := 0; i < b.N; i++ { +// v := randomdata.Number(0, 65535) +// s.Push(v) +// } - for i := 0; i < b.N; i++ { - s.Pop() - } -} +// b.ResetTimer() +// b.StartTimer() -func BenchmarkGodsPop(b *testing.B) { - s := arraystack.New() - b.N = 200000 +// for i := 0; i < b.N; i++ { +// s.Pop() +// } +// } - for i := 0; i < b.N; i++ { - v := randomdata.Number(0, 65535) - s.Push(v) - } +// func BenchmarkValues(b *testing.B) { +// s := New() +// for i := 0; i < b.N; i++ { +// v := randomdata.Number(0, 65535) +// s.Push(v) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < b.N; i++ { - s.Pop() - } -} +// for i := 0; i < b.N; i++ { +// s.Values() +// } +// } -func BenchmarkValues(b *testing.B) { - s := New() - for i := 0; i < b.N; i++ { - v := randomdata.Number(0, 65535) - s.Push(v) - } +// func BenchmarkGodsValues(b *testing.B) { +// s := arraystack.New() +// for i := 0; i < b.N; i++ { +// v := randomdata.Number(0, 65535) +// s.Push(v) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < b.N; i++ { - s.Values() - } -} - -func BenchmarkGodsValues(b *testing.B) { - s := arraystack.New() - for i := 0; i < b.N; i++ { - v := randomdata.Number(0, 65535) - s.Push(v) - } - - b.ResetTimer() - b.StartTimer() - - for i := 0; i < b.N; i++ { - s.Values() - } -} +// for i := 0; i < b.N; i++ { +// s.Values() +// } +// } diff --git a/tree/avl/avl_test.go b/tree/avl/avl_test.go index 37e2539..154d5ec 100644 --- a/tree/avl/avl_test.go +++ b/tree/avl/avl_test.go @@ -8,10 +8,7 @@ import ( "testing" "github.com/474420502/focus/compare" - "github.com/Pallinder/go-randomdata" "github.com/davecgh/go-spew/spew" - "github.com/emirpasic/gods/trees/avltree" - "github.com/emirpasic/gods/trees/redblacktree" ) func loadTestData() []int { @@ -225,32 +222,32 @@ func TestPutStable(t *testing.T) { // t.Error(tree.debugString(), tree.TraversalBreadth(), "\n", "-----------") } -func TestPutComparatorRandom(t *testing.T) { +// func TestPutComparatorRandom(t *testing.T) { - for n := 0; n < 300000; n++ { - tree := New(compare.Int) - godsavl := avltree.NewWithIntComparator() +// for n := 0; n < 300000; n++ { +// tree := New(compare.Int) +// godsavl := avltree.NewWithIntComparator() - content := "" - m := make(map[int]int) - for i := 0; len(m) < 10; i++ { - v := randomdata.Number(0, 65535) - if _, ok := m[v]; !ok { - m[v] = v - content += spew.Sprint(v) + "," - tree.Put(v) - godsavl.Put(v, v) - } - } +// content := "" +// m := make(map[int]int) +// for i := 0; len(m) < 10; i++ { +// v := randomdata.Number(0, 65535) +// if _, ok := m[v]; !ok { +// m[v] = v +// content += spew.Sprint(v) + "," +// tree.Put(v) +// godsavl.Put(v, v) +// } +// } - if tree.String() != godsavl.String() { - t.Error(godsavl.String()) - t.Error(tree.debugString()) - t.Error(content, n) - break - } - } -} +// if tree.String() != godsavl.String() { +// t.Error(godsavl.String()) +// t.Error(tree.debugString()) +// t.Error(content, n) +// break +// } +// } +// } func TestGet(t *testing.T) { tree := New(compare.Int) @@ -290,273 +287,273 @@ func TestGet(t *testing.T) { } -func TestRemoveAll(t *testing.T) { +// func TestRemoveAll(t *testing.T) { -ALL: - for c := 0; c < 50000; c++ { - tree := New(compare.Int) - gods := avltree.NewWithIntComparator() - var l []int - m := make(map[int]int) +// ALL: +// for c := 0; c < 50000; c++ { +// tree := New(compare.Int) +// gods := avltree.NewWithIntComparator() +// var l []int +// m := make(map[int]int) - for i := 0; len(l) < 50; i++ { - v := randomdata.Number(0, 100000) - if _, ok := m[v]; !ok { - m[v] = v - l = append(l, v) - tree.Put(v) - gods.Put(v, v) - } - } +// for i := 0; len(l) < 50; i++ { +// v := randomdata.Number(0, 100000) +// if _, ok := m[v]; !ok { +// m[v] = v +// l = append(l, v) +// tree.Put(v) +// gods.Put(v, v) +// } +// } - for i := 0; i < 50; i++ { - tree.Remove(l[i]) - gods.Remove(l[i]) - s1 := spew.Sprint(tree.Values()) - s2 := spew.Sprint(gods.Values()) - if s1 != s2 { - t.Error("avl remove error", "avlsize = ", tree.Size()) - t.Error(s1) - t.Error(s2) - break ALL - } - } - } +// for i := 0; i < 50; i++ { +// tree.Remove(l[i]) +// gods.Remove(l[i]) +// s1 := spew.Sprint(tree.Values()) +// s2 := spew.Sprint(gods.Values()) +// if s1 != s2 { +// t.Error("avl remove error", "avlsize = ", tree.Size()) +// t.Error(s1) +// t.Error(s2) +// break ALL +// } +// } +// } -} +// } -func TestRemove(t *testing.T) { +// func TestRemove(t *testing.T) { -ALL: - for N := 0; N < 500000; N++ { - tree := New(compare.Int) - gods := avltree.NewWithIntComparator() +// ALL: +// for N := 0; N < 500000; N++ { +// tree := New(compare.Int) +// gods := avltree.NewWithIntComparator() - var l []int - m := make(map[int]int) +// var l []int +// m := make(map[int]int) - for i := 0; len(l) < 10; i++ { - v := randomdata.Number(0, 100) - if _, ok := m[v]; !ok { - l = append(l, v) - m[v] = v - tree.Put(v) - gods.Put(v, v) - } - } +// for i := 0; len(l) < 10; i++ { +// v := randomdata.Number(0, 100) +// if _, ok := m[v]; !ok { +// l = append(l, v) +// m[v] = v +// tree.Put(v) +// gods.Put(v, v) +// } +// } - src1 := tree.String() - src2 := gods.String() +// src1 := tree.String() +// src2 := gods.String() - for i := 0; i < 10; i++ { - tree.Remove(l[i]) - gods.Remove(l[i]) - if spew.Sprint(gods.Values()) != spew.Sprint(tree.Values()) && tree.size != 0 { - // if gods.String() != tree.String() && gods.Size() != 0 && tree.size != 0 { - t.Error(src1) - t.Error(src2) - t.Error(tree.debugString()) - t.Error(gods.String()) - t.Error(l[i]) - // t.Error(tree.TraversalDepth(-1)) - // t.Error(gods.Values()) - break ALL - } - } - } -} +// for i := 0; i < 10; i++ { +// tree.Remove(l[i]) +// gods.Remove(l[i]) +// if spew.Sprint(gods.Values()) != spew.Sprint(tree.Values()) && tree.size != 0 { +// // if gods.String() != tree.String() && gods.Size() != 0 && tree.size != 0 { +// t.Error(src1) +// t.Error(src2) +// t.Error(tree.debugString()) +// t.Error(gods.String()) +// t.Error(l[i]) +// // t.Error(tree.TraversalDepth(-1)) +// // t.Error(gods.Values()) +// break ALL +// } +// } +// } +// } -func BenchmarkIterator(b *testing.B) { - tree := New(compare.Int) +// func BenchmarkIterator(b *testing.B) { +// tree := New(compare.Int) - l := loadTestData() +// l := loadTestData() - for _, v := range l { - tree.Put(v) - } +// for _, v := range l { +// tree.Put(v) +// } - b.ResetTimer() - b.StartTimer() - b.N = 0 - iter := tree.Iterator() - for iter.Next() { - b.N++ - } - for iter.Prev() { - b.N++ - } - for iter.Next() { - b.N++ - } - for iter.Prev() { - b.N++ - } +// b.ResetTimer() +// b.StartTimer() +// b.N = 0 +// iter := tree.Iterator() +// for iter.Next() { +// b.N++ +// } +// for iter.Prev() { +// b.N++ +// } +// for iter.Next() { +// b.N++ +// } +// for iter.Prev() { +// b.N++ +// } -} +// } -func BenchmarkRemove(b *testing.B) { - tree := New(compare.Int) +// func BenchmarkRemove(b *testing.B) { +// tree := New(compare.Int) - l := loadTestData() +// l := loadTestData() - b.N = len(l) - for _, v := range l { - tree.Put(v) - } +// b.N = len(l) +// for _, v := range l { +// tree.Put(v) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } -func BenchmarkGodsRemove(b *testing.B) { - tree := avltree.NewWithIntComparator() +// func BenchmarkGodsRemove(b *testing.B) { +// tree := avltree.NewWithIntComparator() - l := loadTestData() +// l := loadTestData() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } -func BenchmarkGodsRBRemove(b *testing.B) { - tree := redblacktree.NewWithIntComparator() +// func BenchmarkGodsRBRemove(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() - l := loadTestData() +// l := loadTestData() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } -func BenchmarkGet(b *testing.B) { +// func BenchmarkGet(b *testing.B) { - tree := New(compare.Int) +// tree := New(compare.Int) - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i]) - } +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i]) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - execCount := 10 - b.N = len(l) * execCount +// execCount := 10 +// b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } -func BenchmarkGodsRBGet(b *testing.B) { - tree := redblacktree.NewWithIntComparator() +// func BenchmarkGodsRBGet(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i], l[i]) - } +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i], l[i]) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - execCount := 10 - b.N = len(l) * execCount +// execCount := 10 +// b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } -func BenchmarkGodsAvlGet(b *testing.B) { - tree := avltree.NewWithIntComparator() +// func BenchmarkGodsAvlGet(b *testing.B) { +// tree := avltree.NewWithIntComparator() - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i], l[i]) - } +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i], l[i]) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - execCount := 10 - b.N = len(l) * execCount +// execCount := 10 +// b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } -func BenchmarkPut(b *testing.B) { +// func BenchmarkPut(b *testing.B) { - l := loadTestData() +// l := loadTestData() - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - execCount := 50 - b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - tree := New(compare.Int) - for _, v := range l { - tree.Put(v) - } - } - // b.Log(tree.count) -} +// execCount := 50 +// b.N = len(l) * execCount +// for i := 0; i < execCount; i++ { +// tree := New(compare.Int) +// for _, v := range l { +// tree.Put(v) +// } +// } +// // b.Log(tree.count) +// } -func BenchmarkGodsRBPut(b *testing.B) { - tree := redblacktree.NewWithIntComparator() +// func BenchmarkGodsRBPut(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() - l := loadTestData() +// l := loadTestData() - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } -} +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } +// } -func BenchmarkGodsPut(b *testing.B) { - tree := avltree.NewWithIntComparator() +// func BenchmarkGodsPut(b *testing.B) { +// tree := avltree.NewWithIntComparator() - l := loadTestData() +// l := loadTestData() - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } -} +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } +// } diff --git a/tree/avldup/avldup_test.go b/tree/avldup/avldup_test.go index ab6ea01..e4651fb 100644 --- a/tree/avldup/avldup_test.go +++ b/tree/avldup/avldup_test.go @@ -8,12 +8,7 @@ import ( "testing" "github.com/474420502/focus/compare" - "github.com/Pallinder/go-randomdata" "github.com/davecgh/go-spew/spew" - "github.com/emirpasic/gods/trees/avltree" - "github.com/emirpasic/gods/trees/redblacktree" - - "github.com/emirpasic/gods/utils" ) func loadTestData() []int { @@ -162,32 +157,32 @@ func TestPutStable(t *testing.T) { // t.Error(tree.debugString(), tree.TraversalBreadth(), "\n", "-----------") } -func TestPutComparatorRandom(t *testing.T) { +// func TestPutComparatorRandom(t *testing.T) { - for n := 0; n < 300000; n++ { - tree := New(compare.Int) - godsavl := avltree.NewWithIntComparator() +// for n := 0; n < 300000; n++ { +// tree := New(compare.Int) +// godsavl := avltree.NewWithIntComparator() - content := "" - m := make(map[int]int) - for i := 0; len(m) < 10; i++ { - v := randomdata.Number(0, 65535) - if _, ok := m[v]; !ok { - m[v] = v - content += spew.Sprint(v) + "," - tree.Put(v) - godsavl.Put(v, v) - } - } +// content := "" +// m := make(map[int]int) +// for i := 0; len(m) < 10; i++ { +// v := randomdata.Number(0, 65535) +// if _, ok := m[v]; !ok { +// m[v] = v +// content += spew.Sprint(v) + "," +// tree.Put(v) +// godsavl.Put(v, v) +// } +// } - if tree.String() != godsavl.String() { - t.Error(godsavl.String()) - t.Error(tree.debugString()) - t.Error(content, n) - break - } - } -} +// if tree.String() != godsavl.String() { +// t.Error(godsavl.String()) +// t.Error(tree.debugString()) +// t.Error(content, n) +// break +// } +// } +// } func TestGet(t *testing.T) { tree := New(compare.Int) @@ -227,260 +222,260 @@ func TestGet(t *testing.T) { } -func TestRemoveAll(t *testing.T) { +// func TestRemoveAll(t *testing.T) { -ALL: - for c := 0; c < 5000; c++ { - tree := New(compare.Int) - gods := avltree.NewWithIntComparator() - var l []int - m := make(map[int]int) +// ALL: +// for c := 0; c < 5000; c++ { +// tree := New(compare.Int) +// gods := avltree.NewWithIntComparator() +// var l []int +// m := make(map[int]int) - for i := 0; len(l) < 100; i++ { - v := randomdata.Number(0, 100000) - if _, ok := m[v]; !ok { - m[v] = v - l = append(l, v) - tree.Put(v) - gods.Put(v, v) - } - } +// for i := 0; len(l) < 100; i++ { +// v := randomdata.Number(0, 100000) +// if _, ok := m[v]; !ok { +// m[v] = v +// l = append(l, v) +// tree.Put(v) +// gods.Put(v, v) +// } +// } - for i := 0; i < 100; i++ { - tree.Remove(l[i]) - gods.Remove(l[i]) - s1 := spew.Sprint(tree.Values()) - s2 := spew.Sprint(gods.Values()) - if s1 != s2 { - t.Error("avl remove error", "avlsize = ", tree.Size()) - t.Error(s1) - t.Error(s2) - break ALL - } - } - } +// for i := 0; i < 100; i++ { +// tree.Remove(l[i]) +// gods.Remove(l[i]) +// s1 := spew.Sprint(tree.Values()) +// s2 := spew.Sprint(gods.Values()) +// if s1 != s2 { +// t.Error("avl remove error", "avlsize = ", tree.Size()) +// t.Error(s1) +// t.Error(s2) +// break ALL +// } +// } +// } -} +// } -func TestRemove(t *testing.T) { +// func TestRemove(t *testing.T) { -ALL: - for N := 0; N < 500000; N++ { - tree := New(compare.Int) - gods := avltree.NewWithIntComparator() +// ALL: +// for N := 0; N < 500000; N++ { +// tree := New(compare.Int) +// gods := avltree.NewWithIntComparator() - var l []int - m := make(map[int]int) +// var l []int +// m := make(map[int]int) - for i := 0; len(l) < 10; i++ { - v := randomdata.Number(0, 100) - if _, ok := m[v]; !ok { - l = append(l, v) - m[v] = v - tree.Put(v) - gods.Put(v, v) - } - } +// for i := 0; len(l) < 10; i++ { +// v := randomdata.Number(0, 100) +// if _, ok := m[v]; !ok { +// l = append(l, v) +// m[v] = v +// tree.Put(v) +// gods.Put(v, v) +// } +// } - src1 := tree.String() - src2 := gods.String() +// src1 := tree.String() +// src2 := gods.String() - for i := 0; i < 10; i++ { - tree.Remove(l[i]) - gods.Remove(l[i]) - if spew.Sprint(gods.Values()) != spew.Sprint(tree.Values()) && tree.size != 0 { - // if gods.String() != tree.String() && gods.Size() != 0 && tree.size != 0 { - t.Error(src1) - t.Error(src2) - t.Error(tree.debugString()) - t.Error(gods.String()) - t.Error(l[i]) - // t.Error(tree.TraversalDepth(-1)) - // t.Error(gods.Values()) - break ALL - } - } - } -} +// for i := 0; i < 10; i++ { +// tree.Remove(l[i]) +// gods.Remove(l[i]) +// if spew.Sprint(gods.Values()) != spew.Sprint(tree.Values()) && tree.size != 0 { +// // if gods.String() != tree.String() && gods.Size() != 0 && tree.size != 0 { +// t.Error(src1) +// t.Error(src2) +// t.Error(tree.debugString()) +// t.Error(gods.String()) +// t.Error(l[i]) +// // t.Error(tree.TraversalDepth(-1)) +// // t.Error(gods.Values()) +// break ALL +// } +// } +// } +// } -func BenchmarkIterator(b *testing.B) { - tree := New(utils.IntComparator) +// func BenchmarkIterator(b *testing.B) { +// tree := New(utils.IntComparator) - l := loadTestData() +// l := loadTestData() - for _, v := range l { - tree.Put(v) - } +// for _, v := range l { +// tree.Put(v) +// } - b.ResetTimer() - b.StartTimer() - b.N = 0 - iter := tree.Iterator() - for iter.Next() { - b.N++ - } - for iter.Prev() { - b.N++ - } - for iter.Next() { - b.N++ - } - for iter.Prev() { - b.N++ - } +// b.ResetTimer() +// b.StartTimer() +// b.N = 0 +// iter := tree.Iterator() +// for iter.Next() { +// b.N++ +// } +// for iter.Prev() { +// b.N++ +// } +// for iter.Next() { +// b.N++ +// } +// for iter.Prev() { +// b.N++ +// } -} +// } -func BenchmarkRemove(b *testing.B) { - tree := New(utils.IntComparator) +// func BenchmarkRemove(b *testing.B) { +// tree := New(utils.IntComparator) - l := loadTestData() +// l := loadTestData() - for _, v := range l { - tree.Put(v) - } +// for _, v := range l { +// tree.Put(v) +// } - ll := tree.Values() - b.N = len(ll) - b.ResetTimer() - b.StartTimer() +// ll := tree.Values() +// b.N = len(ll) +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < len(ll); i++ { - tree.Remove(l[i]) - } -} +// for i := 0; i < len(ll); i++ { +// tree.Remove(l[i]) +// } +// } -func BenchmarkGodsRemove(b *testing.B) { - tree := avltree.NewWithIntComparator() +// func BenchmarkGodsRemove(b *testing.B) { +// tree := avltree.NewWithIntComparator() - l := loadTestData() +// l := loadTestData() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } - ll := tree.Values() - b.N = len(ll) - b.ResetTimer() - b.StartTimer() +// ll := tree.Values() +// b.N = len(ll) +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < len(ll); i++ { - tree.Remove(l[i]) - } -} +// for i := 0; i < len(ll); i++ { +// tree.Remove(l[i]) +// } +// } -func BenchmarkGodsRBRemove(b *testing.B) { - tree := redblacktree.NewWithIntComparator() +// func BenchmarkGodsRBRemove(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() - l := loadTestData() +// l := loadTestData() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } - ll := tree.Values() - b.N = len(ll) +// ll := tree.Values() +// b.N = len(ll) - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < len(ll); i++ { - tree.Remove(l[i]) - } -} +// for i := 0; i < len(ll); i++ { +// tree.Remove(l[i]) +// } +// } -func BenchmarkGet(b *testing.B) { +// func BenchmarkGet(b *testing.B) { - tree := New(compare.Int) +// tree := New(compare.Int) - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i]) - } +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i]) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - execCount := 10 - b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} +// execCount := 10 +// b.N = len(l) * execCount +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } -func BenchmarkGodsRBGet(b *testing.B) { - tree := redblacktree.NewWithIntComparator() +// func BenchmarkGodsRBGet(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() - l := loadTestData() - b.N = len(l) +// l := loadTestData() +// b.N = len(l) - b.ResetTimer() - b.StartTimer() - for i := 0; i < b.N; i++ { - tree.Get(l[i]) - } -} +// b.ResetTimer() +// b.StartTimer() +// for i := 0; i < b.N; i++ { +// tree.Get(l[i]) +// } +// } -func BenchmarkGodsAvlGet(b *testing.B) { - tree := avltree.NewWithIntComparator() +// func BenchmarkGodsAvlGet(b *testing.B) { +// tree := avltree.NewWithIntComparator() - l := loadTestData() - b.N = len(l) +// l := loadTestData() +// b.N = len(l) - b.ResetTimer() - b.StartTimer() - for i := 0; i < b.N; i++ { - tree.Get(l[i]) - } -} +// b.ResetTimer() +// b.StartTimer() +// for i := 0; i < b.N; i++ { +// tree.Get(l[i]) +// } +// } -func BenchmarkPut(b *testing.B) { +// func BenchmarkPut(b *testing.B) { - l := loadTestData() +// l := loadTestData() - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - execCount := 1000 - b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - tree := New(compare.Int) - for _, v := range l { - tree.Put(v) - } - } - // b.Log(tree.count) -} +// execCount := 1000 +// b.N = len(l) * execCount +// for i := 0; i < execCount; i++ { +// tree := New(compare.Int) +// for _, v := range l { +// tree.Put(v) +// } +// } +// // b.Log(tree.count) +// } -func BenchmarkGodsRBPut(b *testing.B) { - tree := redblacktree.NewWithIntComparator() +// func BenchmarkGodsRBPut(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() - l := loadTestData() +// l := loadTestData() - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } -} +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } +// } -func BenchmarkGodsPut(b *testing.B) { - tree := avltree.NewWithIntComparator() +// func BenchmarkGodsPut(b *testing.B) { +// tree := avltree.NewWithIntComparator() - l := loadTestData() +// l := loadTestData() - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } -} +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } +// } diff --git a/tree/avlkey/avlkey_test.go b/tree/avlkey/avlkey_test.go index c1e13dd..013b3b4 100644 --- a/tree/avlkey/avlkey_test.go +++ b/tree/avlkey/avlkey_test.go @@ -8,10 +8,7 @@ import ( "testing" "github.com/474420502/focus/compare" - "github.com/Pallinder/go-randomdata" "github.com/davecgh/go-spew/spew" - "github.com/emirpasic/gods/trees/avltree" - "github.com/emirpasic/gods/trees/redblacktree" ) func loadTestData() []int { @@ -226,32 +223,32 @@ func TestPutStable(t *testing.T) { // t.Error(tree.debugString(), tree.TraversalBreadth(), "\n", "-----------") } -func TestPutComparatorRandom(t *testing.T) { +// func TestPutComparatorRandom(t *testing.T) { - for n := 0; n < 300000; n++ { - tree := New(compare.Int) - godsavl := avltree.NewWithIntComparator() +// for n := 0; n < 300000; n++ { +// tree := New(compare.Int) +// godsavl := avltree.NewWithIntComparator() - content := "" - m := make(map[int]int) - for i := 0; len(m) < 10; i++ { - v := randomdata.Number(0, 65535) - if _, ok := m[v]; !ok { - m[v] = v - content += spew.Sprint(v) + "," - tree.Put(v, v) - godsavl.Put(v, v) - } - } +// content := "" +// m := make(map[int]int) +// for i := 0; len(m) < 10; i++ { +// v := randomdata.Number(0, 65535) +// if _, ok := m[v]; !ok { +// m[v] = v +// content += spew.Sprint(v) + "," +// tree.Put(v, v) +// godsavl.Put(v, v) +// } +// } - if tree.String() != godsavl.String() { - t.Error(godsavl.String()) - t.Error(tree.debugString()) - t.Error(content, n) - break - } - } -} +// if tree.String() != godsavl.String() { +// t.Error(godsavl.String()) +// t.Error(tree.debugString()) +// t.Error(content, n) +// break +// } +// } +// } func TestGet(t *testing.T) { tree := New(compare.Int) @@ -291,230 +288,230 @@ func TestGet(t *testing.T) { } -func TestRemoveAll(t *testing.T) { +// func TestRemoveAll(t *testing.T) { -ALL: - for c := 0; c < 50000; c++ { - tree := New(compare.Int) - gods := avltree.NewWithIntComparator() - var l []int - m := make(map[int]int) +// ALL: +// for c := 0; c < 50000; c++ { +// tree := New(compare.Int) +// gods := avltree.NewWithIntComparator() +// var l []int +// m := make(map[int]int) - for i := 0; len(l) < 50; i++ { - v := randomdata.Number(0, 100000) - if _, ok := m[v]; !ok { - m[v] = v - l = append(l, v) - tree.Put(v, v) - gods.Put(v, v) - } - } +// for i := 0; len(l) < 50; i++ { +// v := randomdata.Number(0, 100000) +// if _, ok := m[v]; !ok { +// m[v] = v +// l = append(l, v) +// tree.Put(v, v) +// gods.Put(v, v) +// } +// } - for i := 0; i < 50; i++ { - tree.Remove(l[i]) - gods.Remove(l[i]) - s1 := spew.Sprint(tree.Values()) - s2 := spew.Sprint(gods.Values()) - if s1 != s2 { - t.Error("avl remove error", "avlsize = ", tree.Size()) - t.Error(s1) - t.Error(s2) - break ALL - } - } - } +// for i := 0; i < 50; i++ { +// tree.Remove(l[i]) +// gods.Remove(l[i]) +// s1 := spew.Sprint(tree.Values()) +// s2 := spew.Sprint(gods.Values()) +// if s1 != s2 { +// t.Error("avl remove error", "avlsize = ", tree.Size()) +// t.Error(s1) +// t.Error(s2) +// break ALL +// } +// } +// } -} +// } -func TestRemove(t *testing.T) { +// func TestRemove(t *testing.T) { -ALL: - for N := 0; N < 500000; N++ { - tree := New(compare.Int) - gods := avltree.NewWithIntComparator() +// ALL: +// for N := 0; N < 500000; N++ { +// tree := New(compare.Int) +// gods := avltree.NewWithIntComparator() - var l []int - m := make(map[int]int) +// var l []int +// m := make(map[int]int) - for i := 0; len(l) < 10; i++ { - v := randomdata.Number(0, 100) - if _, ok := m[v]; !ok { - l = append(l, v) - m[v] = v - tree.Put(v, v) - gods.Put(v, v) - } - } +// for i := 0; len(l) < 10; i++ { +// v := randomdata.Number(0, 100) +// if _, ok := m[v]; !ok { +// l = append(l, v) +// m[v] = v +// tree.Put(v, v) +// gods.Put(v, v) +// } +// } - src1 := tree.String() - src2 := gods.String() +// src1 := tree.String() +// src2 := gods.String() - for i := 0; i < 10; i++ { - tree.Remove(l[i]) - gods.Remove(l[i]) - if spew.Sprint(gods.Values()) != spew.Sprint(tree.Values()) && tree.size != 0 { - // if gods.String() != tree.String() && gods.Size() != 0 && tree.size != 0 { - t.Error(src1) - t.Error(src2) - t.Error(tree.debugString()) - t.Error(gods.String()) - t.Error(l[i]) - // t.Error(tree.TraversalDepth(-1)) - // t.Error(gods.Values()) - break ALL - } - } - } -} +// for i := 0; i < 10; i++ { +// tree.Remove(l[i]) +// gods.Remove(l[i]) +// if spew.Sprint(gods.Values()) != spew.Sprint(tree.Values()) && tree.size != 0 { +// // if gods.String() != tree.String() && gods.Size() != 0 && tree.size != 0 { +// t.Error(src1) +// t.Error(src2) +// t.Error(tree.debugString()) +// t.Error(gods.String()) +// t.Error(l[i]) +// // t.Error(tree.TraversalDepth(-1)) +// // t.Error(gods.Values()) +// break ALL +// } +// } +// } +// } -func BenchmarkIterator(b *testing.B) { - tree := New(compare.Int) +// func BenchmarkIterator(b *testing.B) { +// tree := New(compare.Int) - l := loadTestData() +// l := loadTestData() - for _, v := range l { - tree.Put(v, v) - } +// for _, v := range l { +// tree.Put(v, v) +// } - b.ResetTimer() - b.StartTimer() - b.N = 0 - iter := tree.Iterator() - for iter.Next() { - b.N++ - } - for iter.Prev() { - b.N++ - } - for iter.Next() { - b.N++ - } - for iter.Prev() { - b.N++ - } +// b.ResetTimer() +// b.StartTimer() +// b.N = 0 +// iter := tree.Iterator() +// for iter.Next() { +// b.N++ +// } +// for iter.Prev() { +// b.N++ +// } +// for iter.Next() { +// b.N++ +// } +// for iter.Prev() { +// b.N++ +// } -} +// } -func BenchmarkRemove(b *testing.B) { - tree := New(compare.Int) +// func BenchmarkRemove(b *testing.B) { +// tree := New(compare.Int) - l := loadTestData() +// l := loadTestData() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } -func BenchmarkGodsRemove(b *testing.B) { - tree := avltree.NewWithIntComparator() +// func BenchmarkGodsRemove(b *testing.B) { +// tree := avltree.NewWithIntComparator() - l := loadTestData() +// l := loadTestData() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } -func BenchmarkGodsRBRemove(b *testing.B) { - tree := redblacktree.NewWithIntComparator() +// func BenchmarkGodsRBRemove(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() - l := loadTestData() +// l := loadTestData() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } -func BenchmarkGet(b *testing.B) { +// func BenchmarkGet(b *testing.B) { - tree := New(compare.Int) +// tree := New(compare.Int) - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i], l[i]) - } +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i], l[i]) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - execCount := 10 - b.N = len(l) * execCount +// execCount := 10 +// b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } -func BenchmarkGodsRBGet(b *testing.B) { - tree := redblacktree.NewWithIntComparator() +// func BenchmarkGodsRBGet(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i], l[i]) - } +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i], l[i]) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - execCount := 10 - b.N = len(l) * execCount +// execCount := 10 +// b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } -func BenchmarkGodsAvlGet(b *testing.B) { - tree := avltree.NewWithIntComparator() +// func BenchmarkGodsAvlGet(b *testing.B) { +// tree := avltree.NewWithIntComparator() - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i], l[i]) - } +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i], l[i]) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - execCount := 10 - b.N = len(l) * execCount +// execCount := 10 +// b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } func BenchmarkPut(b *testing.B) { @@ -534,30 +531,30 @@ func BenchmarkPut(b *testing.B) { // b.Log(tree.count) } -func BenchmarkGodsRBPut(b *testing.B) { - tree := redblacktree.NewWithIntComparator() +// func BenchmarkGodsRBPut(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() - l := loadTestData() +// l := loadTestData() - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } -} +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } +// } -func BenchmarkGodsPut(b *testing.B) { - tree := avltree.NewWithIntComparator() +// func BenchmarkGodsPut(b *testing.B) { +// tree := avltree.NewWithIntComparator() - l := loadTestData() +// l := loadTestData() - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } -} +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } +// } diff --git a/tree/avlkeydup/avlkeydup_test.go b/tree/avlkeydup/avlkeydup_test.go index ec44a32..13dee70 100644 --- a/tree/avlkeydup/avlkeydup_test.go +++ b/tree/avlkeydup/avlkeydup_test.go @@ -8,12 +8,7 @@ import ( "testing" "github.com/474420502/focus/compare" - "github.com/Pallinder/go-randomdata" "github.com/davecgh/go-spew/spew" - "github.com/emirpasic/gods/trees/avltree" - "github.com/emirpasic/gods/trees/redblacktree" - - "github.com/emirpasic/gods/utils" ) func loadTestData() []int { @@ -162,32 +157,32 @@ func TestPutStable(t *testing.T) { // t.Error(tree.debugString(), tree.TraversalBreadth(), "\n", "-----------") } -func TestPutComparatorRandom(t *testing.T) { +// func TestPutComparatorRandom(t *testing.T) { - for n := 0; n < 300000; n++ { - tree := New(compare.Int) - godsavl := avltree.NewWithIntComparator() +// for n := 0; n < 300000; n++ { +// tree := New(compare.Int) +// godsavl := avltree.NewWithIntComparator() - content := "" - m := make(map[int]int) - for i := 0; len(m) < 10; i++ { - v := randomdata.Number(0, 65535) - if _, ok := m[v]; !ok { - m[v] = v - content += spew.Sprint(v) + "," - tree.Put(v, v) - godsavl.Put(v, v) - } - } +// content := "" +// m := make(map[int]int) +// for i := 0; len(m) < 10; i++ { +// v := randomdata.Number(0, 65535) +// if _, ok := m[v]; !ok { +// m[v] = v +// content += spew.Sprint(v) + "," +// tree.Put(v, v) +// godsavl.Put(v, v) +// } +// } - if tree.String() != godsavl.String() { - t.Error(godsavl.String()) - t.Error(tree.debugString()) - t.Error(content, n) - break - } - } -} +// if tree.String() != godsavl.String() { +// t.Error(godsavl.String()) +// t.Error(tree.debugString()) +// t.Error(content, n) +// break +// } +// } +// } func TestGet(t *testing.T) { tree := New(compare.Int) @@ -227,260 +222,260 @@ func TestGet(t *testing.T) { } -func TestRemoveAll(t *testing.T) { +// func TestRemoveAll(t *testing.T) { -ALL: - for c := 0; c < 5000; c++ { - tree := New(compare.Int) - gods := avltree.NewWithIntComparator() - var l []int - m := make(map[int]int) +// ALL: +// for c := 0; c < 5000; c++ { +// tree := New(compare.Int) +// gods := avltree.NewWithIntComparator() +// var l []int +// m := make(map[int]int) - for i := 0; len(l) < 100; i++ { - v := randomdata.Number(0, 100000) - if _, ok := m[v]; !ok { - m[v] = v - l = append(l, v) - tree.Put(v, v) - gods.Put(v, v) - } - } +// for i := 0; len(l) < 100; i++ { +// v := randomdata.Number(0, 100000) +// if _, ok := m[v]; !ok { +// m[v] = v +// l = append(l, v) +// tree.Put(v, v) +// gods.Put(v, v) +// } +// } - for i := 0; i < 100; i++ { - tree.Remove(l[i]) - gods.Remove(l[i]) - s1 := spew.Sprint(tree.Values()) - s2 := spew.Sprint(gods.Values()) - if s1 != s2 { - t.Error("avl remove error", "avlsize = ", tree.Size()) - t.Error(s1) - t.Error(s2) - break ALL - } - } - } +// for i := 0; i < 100; i++ { +// tree.Remove(l[i]) +// gods.Remove(l[i]) +// s1 := spew.Sprint(tree.Values()) +// s2 := spew.Sprint(gods.Values()) +// if s1 != s2 { +// t.Error("avl remove error", "avlsize = ", tree.Size()) +// t.Error(s1) +// t.Error(s2) +// break ALL +// } +// } +// } -} +// } -func TestRemove(t *testing.T) { +// func TestRemove(t *testing.T) { -ALL: - for N := 0; N < 500000; N++ { - tree := New(compare.Int) - gods := avltree.NewWithIntComparator() +// ALL: +// for N := 0; N < 500000; N++ { +// tree := New(compare.Int) +// gods := avltree.NewWithIntComparator() - var l []int - m := make(map[int]int) +// var l []int +// m := make(map[int]int) - for i := 0; len(l) < 10; i++ { - v := randomdata.Number(0, 100) - if _, ok := m[v]; !ok { - l = append(l, v) - m[v] = v - tree.Put(v, v) - gods.Put(v, v) - } - } +// for i := 0; len(l) < 10; i++ { +// v := randomdata.Number(0, 100) +// if _, ok := m[v]; !ok { +// l = append(l, v) +// m[v] = v +// tree.Put(v, v) +// gods.Put(v, v) +// } +// } - src1 := tree.String() - src2 := gods.String() +// src1 := tree.String() +// src2 := gods.String() - for i := 0; i < 10; i++ { - tree.Remove(l[i]) - gods.Remove(l[i]) - if spew.Sprint(gods.Values()) != spew.Sprint(tree.Values()) && tree.size != 0 { - // if gods.String() != tree.String() && gods.Size() != 0 && tree.size != 0 { - t.Error(src1) - t.Error(src2) - t.Error(tree.debugString()) - t.Error(gods.String()) - t.Error(l[i]) - // t.Error(tree.TraversalDepth(-1)) - // t.Error(gods.Values()) - break ALL - } - } - } -} +// for i := 0; i < 10; i++ { +// tree.Remove(l[i]) +// gods.Remove(l[i]) +// if spew.Sprint(gods.Values()) != spew.Sprint(tree.Values()) && tree.size != 0 { +// // if gods.String() != tree.String() && gods.Size() != 0 && tree.size != 0 { +// t.Error(src1) +// t.Error(src2) +// t.Error(tree.debugString()) +// t.Error(gods.String()) +// t.Error(l[i]) +// // t.Error(tree.TraversalDepth(-1)) +// // t.Error(gods.Values()) +// break ALL +// } +// } +// } +// } -func BenchmarkIterator(b *testing.B) { - tree := New(utils.IntComparator) +// func BenchmarkIterator(b *testing.B) { +// tree := New(utils.IntComparator) - l := loadTestData() +// l := loadTestData() - for _, v := range l { - tree.Put(v, v) - } +// for _, v := range l { +// tree.Put(v, v) +// } - b.ResetTimer() - b.StartTimer() - b.N = 0 - iter := tree.Iterator() - for iter.Next() { - b.N++ - } - for iter.Prev() { - b.N++ - } - for iter.Next() { - b.N++ - } - for iter.Prev() { - b.N++ - } +// b.ResetTimer() +// b.StartTimer() +// b.N = 0 +// iter := tree.Iterator() +// for iter.Next() { +// b.N++ +// } +// for iter.Prev() { +// b.N++ +// } +// for iter.Next() { +// b.N++ +// } +// for iter.Prev() { +// b.N++ +// } -} +// } -func BenchmarkRemove(b *testing.B) { - tree := New(utils.IntComparator) +// func BenchmarkRemove(b *testing.B) { +// tree := New(utils.IntComparator) - l := loadTestData() +// l := loadTestData() - for _, v := range l { - tree.Put(v, v) - } +// for _, v := range l { +// tree.Put(v, v) +// } - ll := tree.Values() - b.N = len(ll) - b.ResetTimer() - b.StartTimer() +// ll := tree.Values() +// b.N = len(ll) +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < len(ll); i++ { - tree.Remove(l[i]) - } -} +// for i := 0; i < len(ll); i++ { +// tree.Remove(l[i]) +// } +// } -func BenchmarkGodsRemove(b *testing.B) { - tree := avltree.NewWithIntComparator() +// func BenchmarkGodsRemove(b *testing.B) { +// tree := avltree.NewWithIntComparator() - l := loadTestData() +// l := loadTestData() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } - ll := tree.Values() - b.N = len(ll) - b.ResetTimer() - b.StartTimer() +// ll := tree.Values() +// b.N = len(ll) +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < len(ll); i++ { - tree.Remove(l[i]) - } -} +// for i := 0; i < len(ll); i++ { +// tree.Remove(l[i]) +// } +// } -func BenchmarkGodsRBRemove(b *testing.B) { - tree := redblacktree.NewWithIntComparator() +// func BenchmarkGodsRBRemove(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() - l := loadTestData() +// l := loadTestData() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } - ll := tree.Values() - b.N = len(ll) +// ll := tree.Values() +// b.N = len(ll) - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < len(ll); i++ { - tree.Remove(l[i]) - } -} +// for i := 0; i < len(ll); i++ { +// tree.Remove(l[i]) +// } +// } -func BenchmarkGet(b *testing.B) { +// func BenchmarkGet(b *testing.B) { - tree := New(compare.Int) +// tree := New(compare.Int) - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i], l[i]) - } +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i], l[i]) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - execCount := 10 - b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} +// execCount := 10 +// b.N = len(l) * execCount +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } -func BenchmarkGodsRBGet(b *testing.B) { - tree := redblacktree.NewWithIntComparator() +// func BenchmarkGodsRBGet(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() - l := loadTestData() - b.N = len(l) +// l := loadTestData() +// b.N = len(l) - b.ResetTimer() - b.StartTimer() - for i := 0; i < b.N; i++ { - tree.Get(l[i]) - } -} +// b.ResetTimer() +// b.StartTimer() +// for i := 0; i < b.N; i++ { +// tree.Get(l[i]) +// } +// } -func BenchmarkGodsAvlGet(b *testing.B) { - tree := avltree.NewWithIntComparator() +// func BenchmarkGodsAvlGet(b *testing.B) { +// tree := avltree.NewWithIntComparator() - l := loadTestData() - b.N = len(l) +// l := loadTestData() +// b.N = len(l) - b.ResetTimer() - b.StartTimer() - for i := 0; i < b.N; i++ { - tree.Get(l[i]) - } -} +// b.ResetTimer() +// b.StartTimer() +// for i := 0; i < b.N; i++ { +// tree.Get(l[i]) +// } +// } -func BenchmarkPut(b *testing.B) { +// func BenchmarkPut(b *testing.B) { - l := loadTestData() +// l := loadTestData() - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - execCount := 1000 - b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - tree := New(compare.Int) - for _, v := range l { - tree.Put(v, v) - } - } - // b.Log(tree.count) -} +// execCount := 1000 +// b.N = len(l) * execCount +// for i := 0; i < execCount; i++ { +// tree := New(compare.Int) +// for _, v := range l { +// tree.Put(v, v) +// } +// } +// // b.Log(tree.count) +// } -func BenchmarkGodsRBPut(b *testing.B) { - tree := redblacktree.NewWithIntComparator() +// func BenchmarkGodsRBPut(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() - l := loadTestData() +// l := loadTestData() - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } -} +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } +// } -func BenchmarkGodsPut(b *testing.B) { - tree := avltree.NewWithIntComparator() +// func BenchmarkGodsPut(b *testing.B) { +// tree := avltree.NewWithIntComparator() - l := loadTestData() +// l := loadTestData() - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } -} +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } +// } diff --git a/tree/vbt/vbt_test.go b/tree/vbt/vbt_test.go index 8e167d1..65994b3 100644 --- a/tree/vbt/vbt_test.go +++ b/tree/vbt/vbt_test.go @@ -8,12 +8,8 @@ import ( "testing" "github.com/474420502/focus/compare" - "github.com/huandu/skiplist" - "github.com/Pallinder/go-randomdata" "github.com/davecgh/go-spew/spew" - "github.com/emirpasic/gods/trees/avltree" - "github.com/emirpasic/gods/trees/redblacktree" ) func loadTestData() []int { @@ -156,35 +152,35 @@ func TestGetAround(t *testing.T) { // // for test error case -func TestPutComparatorRandom(t *testing.T) { +// func TestPutComparatorRandom(t *testing.T) { - for n := 0; n < 100000; n++ { - tree := New(compare.Int) - godsavl := avltree.NewWithIntComparator() +// for n := 0; n < 100000; n++ { +// tree := New(compare.Int) +// godsavl := avltree.NewWithIntComparator() - content := "" - m := make(map[int]int) - for i := 0; len(m) < 20; i++ { - v := randomdata.Number(0, 65535) - if _, ok := m[v]; !ok { - m[v] = v - content += spew.Sprint(v) + "," - tree.Put(v) - godsavl.Put(v, v) - } - } +// content := "" +// m := make(map[int]int) +// for i := 0; len(m) < 20; i++ { +// v := randomdata.Number(0, 65535) +// if _, ok := m[v]; !ok { +// m[v] = v +// content += spew.Sprint(v) + "," +// tree.Put(v) +// godsavl.Put(v, v) +// } +// } - s1 := spew.Sprint(tree.Values()) - s2 := spew.Sprint(godsavl.Values()) +// s1 := spew.Sprint(tree.Values()) +// s2 := spew.Sprint(godsavl.Values()) - if s1 != s2 { - t.Error(godsavl.String()) - t.Error(tree.debugString()) - t.Error(content, n) - break - } - } -} +// if s1 != s2 { +// t.Error(godsavl.String()) +// t.Error(tree.debugString()) +// t.Error(content, n) +// break +// } +// } +// } func TestGet(t *testing.T) { tree := New(compare.Int) @@ -284,373 +280,373 @@ func TestTravalsal(t *testing.T) { } -func TestRemoveAll(t *testing.T) { -ALL: - for c := 0; c < 10000; c++ { - tree := New(compare.Int) - gods := avltree.NewWithIntComparator() - var l []int - m := make(map[int]int) - - for i := 0; len(l) < 100; i++ { - v := randomdata.Number(0, 100000) - if _, ok := m[v]; !ok { - m[v] = v - l = append(l, v) - tree.Put(v) - gods.Put(v, v) - } - } - - for i := 0; i < 100; i++ { - - tree.Remove(l[i]) - gods.Remove(l[i]) - - s1 := spew.Sprint(tree.Values()) - s2 := spew.Sprint(gods.Values()) - if s1 != s2 { - t.Error("avl remove error", "avlsize = ", tree.Size()) - t.Error(tree.root, i, l[i]) - t.Error(s1) - t.Error(s2) - break ALL - } - } - } -} - -func TestRemove(t *testing.T) { - -ALL: - for N := 0; N < 5000; N++ { - tree := New(compare.Int) - gods := avltree.NewWithIntComparator() - - var l []int - m := make(map[int]int) - - for i := 0; len(l) < 20; i++ { - v := randomdata.Number(0, 100) - if _, ok := m[v]; !ok { - l = append(l, v) - m[v] = v - tree.Put(v) - gods.Put(v, v) - } - } - - src1 := tree.String() - src2 := gods.String() - - for i := 0; i < 20; i++ { - tree.Remove(l[i]) - gods.Remove(l[i]) - if tree.root != nil && spew.Sprint(gods.Values()) != spew.Sprint(tree.Values()) { - t.Error(src1) - t.Error(src2) - t.Error(tree.debugString()) - t.Error(gods.String()) - t.Error(l[i]) - break ALL - } - } - } -} - -func BenchmarkSkipRemove(b *testing.B) { - sl := skiplist.New(skiplist.Int) - l := loadTestData() - b.N = len(l) - - for _, v := range l { - sl.Set(v, v) - } - - b.ResetTimer() - b.StartTimer() - - for _, v := range l { - sl.Remove(v) - } -} - -func BenchmarkSkipListGet(b *testing.B) { - sl := skiplist.New(skiplist.Int) - l := loadTestData() - b.N = len(l) - - for _, v := range l { - sl.Set(v, v) - } - - b.ResetTimer() - b.StartTimer() - - execCount := 5 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for _, v := range l { - e := sl.Get(v) - var result [50]interface{} - for i := 0; i < 50 && e != nil; i++ { - result[i] = e.Value - e = e.Next() - } - } - } -} - -func BenchmarkGetRange(b *testing.B) { - -} - -func BenchmarkIndexRange(b *testing.B) { - tree := New(compare.Int) - l := loadTestData() - b.N = len(l) - - for _, v := range l { - tree.Put(v) - } - - b.ResetTimer() - b.StartTimer() - - execCount := 5 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for range l { - tree.IndexRange(i, i+49) - } - } -} - -func BenchmarkSkipListSet(b *testing.B) { - - l := loadTestData() - - execCount := 1 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - sl := skiplist.New(skiplist.Int) - for _, v := range l { - sl.Set(v, v) - } - } -} - -func BenchmarkIterator(b *testing.B) { - tree := New(compare.Int) - - l := loadTestData() - b.N = len(l) - - for _, v := range l { - tree.Put(v) - } - - b.ResetTimer() - b.StartTimer() - iter := tree.Iterator() - b.N = 0 - for iter.Next() { - b.N++ - } - for iter.Prev() { - b.N++ - } - for iter.Next() { - b.N++ - } - b.Log(b.N, len(l)) -} - -func BenchmarkRemove(b *testing.B) { - tree := New(compare.Int) - - l := loadTestData() - - b.N = len(l) - for _, v := range l { - tree.Put(v) - } - - b.ResetTimer() - b.StartTimer() - - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} - -func BenchmarkGodsRemove(b *testing.B) { - tree := avltree.NewWithIntComparator() - - l := loadTestData() - - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } - - b.ResetTimer() - b.StartTimer() - - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} - -func BenchmarkGodsRBRemove(b *testing.B) { - tree := redblacktree.NewWithIntComparator() - - l := loadTestData() - - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } - - b.ResetTimer() - b.StartTimer() - - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} - -func BenchmarkGet(b *testing.B) { - - tree := New(compare.Int) - - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i]) - } - - b.ResetTimer() - b.StartTimer() - - execCount := 10 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} +// func TestRemoveAll(t *testing.T) { +// ALL: +// for c := 0; c < 10000; c++ { +// tree := New(compare.Int) +// gods := avltree.NewWithIntComparator() +// var l []int +// m := make(map[int]int) + +// for i := 0; len(l) < 100; i++ { +// v := randomdata.Number(0, 100000) +// if _, ok := m[v]; !ok { +// m[v] = v +// l = append(l, v) +// tree.Put(v) +// gods.Put(v, v) +// } +// } + +// for i := 0; i < 100; i++ { + +// tree.Remove(l[i]) +// gods.Remove(l[i]) + +// s1 := spew.Sprint(tree.Values()) +// s2 := spew.Sprint(gods.Values()) +// if s1 != s2 { +// t.Error("avl remove error", "avlsize = ", tree.Size()) +// t.Error(tree.root, i, l[i]) +// t.Error(s1) +// t.Error(s2) +// break ALL +// } +// } +// } +// } + +// func TestRemove(t *testing.T) { + +// ALL: +// for N := 0; N < 5000; N++ { +// tree := New(compare.Int) +// gods := avltree.NewWithIntComparator() + +// var l []int +// m := make(map[int]int) + +// for i := 0; len(l) < 20; i++ { +// v := randomdata.Number(0, 100) +// if _, ok := m[v]; !ok { +// l = append(l, v) +// m[v] = v +// tree.Put(v) +// gods.Put(v, v) +// } +// } + +// src1 := tree.String() +// src2 := gods.String() + +// for i := 0; i < 20; i++ { +// tree.Remove(l[i]) +// gods.Remove(l[i]) +// if tree.root != nil && spew.Sprint(gods.Values()) != spew.Sprint(tree.Values()) { +// t.Error(src1) +// t.Error(src2) +// t.Error(tree.debugString()) +// t.Error(gods.String()) +// t.Error(l[i]) +// break ALL +// } +// } +// } +// } + +// func BenchmarkSkipRemove(b *testing.B) { +// sl := skiplist.New(skiplist.Int) +// l := loadTestData() +// b.N = len(l) + +// for _, v := range l { +// sl.Set(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// for _, v := range l { +// sl.Remove(v) +// } +// } + +// func BenchmarkSkipListGet(b *testing.B) { +// sl := skiplist.New(skiplist.Int) +// l := loadTestData() +// b.N = len(l) + +// for _, v := range l { +// sl.Set(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 5 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// e := sl.Get(v) +// var result [50]interface{} +// for i := 0; i < 50 && e != nil; i++ { +// result[i] = e.Value +// e = e.Next() +// } +// } +// } +// } + +// func BenchmarkGetRange(b *testing.B) { + +// } + +// func BenchmarkIndexRange(b *testing.B) { +// tree := New(compare.Int) +// l := loadTestData() +// b.N = len(l) + +// for _, v := range l { +// tree.Put(v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 5 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for range l { +// tree.IndexRange(i, i+49) +// } +// } +// } + +// func BenchmarkSkipListSet(b *testing.B) { + +// l := loadTestData() + +// execCount := 1 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// sl := skiplist.New(skiplist.Int) +// for _, v := range l { +// sl.Set(v, v) +// } +// } +// } + +// func BenchmarkIterator(b *testing.B) { +// tree := New(compare.Int) + +// l := loadTestData() +// b.N = len(l) + +// for _, v := range l { +// tree.Put(v) +// } + +// b.ResetTimer() +// b.StartTimer() +// iter := tree.Iterator() +// b.N = 0 +// for iter.Next() { +// b.N++ +// } +// for iter.Prev() { +// b.N++ +// } +// for iter.Next() { +// b.N++ +// } +// b.Log(b.N, len(l)) +// } + +// func BenchmarkRemove(b *testing.B) { +// tree := New(compare.Int) + +// l := loadTestData() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } + +// func BenchmarkGodsRemove(b *testing.B) { +// tree := avltree.NewWithIntComparator() + +// l := loadTestData() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } + +// func BenchmarkGodsRBRemove(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() + +// l := loadTestData() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } + +// func BenchmarkGet(b *testing.B) { + +// tree := New(compare.Int) + +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i]) +// } + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 10 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } -func BenchmarkGodsRBGet(b *testing.B) { - tree := redblacktree.NewWithIntComparator() +// func BenchmarkGodsRBGet(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i], i) - } - - b.ResetTimer() - b.StartTimer() - - execCount := 10 - b.N = len(l) * execCount +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i], i) +// } + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 10 +// b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } -func BenchmarkGodsAvlGet(b *testing.B) { - tree := avltree.NewWithIntComparator() +// func BenchmarkGodsAvlGet(b *testing.B) { +// tree := avltree.NewWithIntComparator() - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i], i) - } +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i], i) +// } - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - execCount := 10 - b.N = len(l) * execCount +// execCount := 10 +// b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } -func BenchmarkPut(b *testing.B) { - l := loadTestData() +// func BenchmarkPut(b *testing.B) { +// l := loadTestData() - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - execCount := 50 - b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - tree := New(compare.Int) - for _, v := range l { - tree.Put(v) - } - } -} +// execCount := 50 +// b.N = len(l) * execCount +// for i := 0; i < execCount; i++ { +// tree := New(compare.Int) +// for _, v := range l { +// tree.Put(v) +// } +// } +// } -func TestPutStable(t *testing.T) { +// func TestPutStable(t *testing.T) { -} +// } -func BenchmarkIndex(b *testing.B) { - tree := New(compare.Int) +// func BenchmarkIndex(b *testing.B) { +// tree := New(compare.Int) - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i]) - } - - b.ResetTimer() - b.StartTimer() +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i]) +// } + +// b.ResetTimer() +// b.StartTimer() - for i := 0; i < b.N; i++ { - tree.Index(i) - } -} - -func BenchmarkGodsRBPut(b *testing.B) { - tree := redblacktree.NewWithIntComparator() - - l := loadTestData() +// for i := 0; i < b.N; i++ { +// tree.Index(i) +// } +// } + +// func BenchmarkGodsRBPut(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() + +// l := loadTestData() - b.ResetTimer() - b.StartTimer() - - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } -} - -func BenchmarkGodsPut(b *testing.B) { - tree := avltree.NewWithIntComparator() +// b.ResetTimer() +// b.StartTimer() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } +// } + +// func BenchmarkGodsPut(b *testing.B) { +// tree := avltree.NewWithIntComparator() - l := loadTestData() +// l := loadTestData() - b.ResetTimer() - b.StartTimer() +// b.ResetTimer() +// b.StartTimer() - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } -} +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } +// } diff --git a/tree/vbtkey/vbtkey_test.go b/tree/vbtkey/vbtkey_test.go index bcfb967..1ea0c4b 100644 --- a/tree/vbtkey/vbtkey_test.go +++ b/tree/vbtkey/vbtkey_test.go @@ -8,12 +8,8 @@ import ( "testing" "github.com/474420502/focus/compare" - "github.com/huandu/skiplist" - "github.com/Pallinder/go-randomdata" "github.com/davecgh/go-spew/spew" - "github.com/emirpasic/gods/trees/avltree" - "github.com/emirpasic/gods/trees/redblacktree" ) func loadTestData() []int { @@ -156,35 +152,35 @@ func TestGetAround(t *testing.T) { // // for test error case -func TestPutComparatorRandom(t *testing.T) { +// func TestPutComparatorRandom(t *testing.T) { - for n := 0; n < 300000; n++ { - tree := New(compare.Int) - godsavl := avltree.NewWithIntComparator() +// for n := 0; n < 300000; n++ { +// tree := New(compare.Int) +// godsavl := avltree.NewWithIntComparator() - content := "" - m := make(map[int]int) - for i := 0; len(m) < 10; i++ { - v := randomdata.Number(0, 65535) - if _, ok := m[v]; !ok { - m[v] = v - content += spew.Sprint(v) + "," - tree.Put(v, v) - godsavl.Put(v, v) - } - } +// content := "" +// m := make(map[int]int) +// for i := 0; len(m) < 10; i++ { +// v := randomdata.Number(0, 65535) +// if _, ok := m[v]; !ok { +// m[v] = v +// content += spew.Sprint(v) + "," +// tree.Put(v, v) +// godsavl.Put(v, v) +// } +// } - s1 := spew.Sprint(tree.Values()) - s2 := spew.Sprint(godsavl.Values()) +// s1 := spew.Sprint(tree.Values()) +// s2 := spew.Sprint(godsavl.Values()) - if s1 != s2 { - t.Error(godsavl.String()) - t.Error(tree.debugString()) - t.Error(content, n) - break - } - } -} +// if s1 != s2 { +// t.Error(godsavl.String()) +// t.Error(tree.debugString()) +// t.Error(content, n) +// break +// } +// } +// } func TestGet(t *testing.T) { tree := New(compare.Int) @@ -284,340 +280,340 @@ func TestTravalsal(t *testing.T) { } -func TestRemoveAll(t *testing.T) { -ALL: - for c := 0; c < 5000; c++ { - tree := New(compare.Int) - gods := avltree.NewWithIntComparator() - var l []int - m := make(map[int]int) - - for i := 0; len(l) < 50; i++ { - v := randomdata.Number(0, 100000) - if _, ok := m[v]; !ok { - m[v] = v - l = append(l, v) - tree.Put(v, v) - gods.Put(v, v) - } - } - - for i := 0; i < 50; i++ { - - tree.Remove(l[i]) - gods.Remove(l[i]) - - s1 := spew.Sprint(tree.Values()) - s2 := spew.Sprint(gods.Values()) - if s1 != s2 { - t.Error("avl remove error", "avlsize = ", tree.Size()) - t.Error(tree.root, i, l[i]) - t.Error(s1) - t.Error(s2) - break ALL - } - } - } -} - -func TestRemove(t *testing.T) { - -ALL: - for N := 0; N < 5000; N++ { - tree := New(compare.Int) - gods := avltree.NewWithIntComparator() - - var l []int - m := make(map[int]int) - - for i := 0; len(l) < 20; i++ { - v := randomdata.Number(0, 100) - if _, ok := m[v]; !ok { - l = append(l, v) - m[v] = v - tree.Put(v, v) - gods.Put(v, v) - } - } - - src1 := tree.String() - src2 := gods.String() - - for i := 0; i < 20; i++ { - tree.Remove(l[i]) - gods.Remove(l[i]) - if tree.root != nil && spew.Sprint(gods.Values()) != spew.Sprint(tree.Values()) { - t.Error(src1) - t.Error(src2) - t.Error(tree.debugString()) - t.Error(gods.String()) - t.Error(l[i]) - break ALL - } - } - } -} - -func BenchmarkGetRange(b *testing.B) { - -} - -func BenchmarkIndexRange(b *testing.B) { - tree := New(compare.Int) - l := loadTestData() - b.N = len(l) - - for _, v := range l { - tree.Put(v, v) - } - - b.ResetTimer() - b.StartTimer() - - execCount := 5 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for range l { - tree.IndexRange(i, i+49) - } - } -} - -func BenchmarkSkipListGet(b *testing.B) { - sl := skiplist.New(skiplist.Int) - l := loadTestData() - b.N = len(l) - - for _, v := range l { - sl.Set(v, v) - } - - b.ResetTimer() - b.StartTimer() - - execCount := 5 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for _, v := range l { - sl.Get(v) - // e := sl.Get(v) - // var result [50]interface{} - // for i := 0; i < 50 && e != nil; i++ { - // result[i] = e.Value - // e = e.Next() - // } - } - } -} - -func BenchmarkSkipListSet(b *testing.B) { - - l := loadTestData() - execCount := 1 - b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - sl := skiplist.New(skiplist.Int) - for _, v := range l { - sl.Set(v, v) - } - } -} - -func BenchmarkIterator(b *testing.B) { - tree := New(compare.Int) - - l := loadTestData() - b.N = len(l) - - for _, v := range l { - tree.Put(v, v) - } - - b.ResetTimer() - b.StartTimer() - iter := tree.Iterator() - b.N = 0 - for iter.Next() { - b.N++ - } - for iter.Prev() { - b.N++ - } - for iter.Next() { - b.N++ - } - b.Log(b.N, len(l)) -} - -func BenchmarkRemove(b *testing.B) { - tree := New(compare.Int) - - l := loadTestData() - - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } - - b.ResetTimer() - b.StartTimer() - - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} - -func BenchmarkGodsRemove(b *testing.B) { - tree := avltree.NewWithIntComparator() - - l := loadTestData() - - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } - - b.ResetTimer() - b.StartTimer() - - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} - -func BenchmarkGodsRBRemove(b *testing.B) { - tree := redblacktree.NewWithIntComparator() - - l := loadTestData() - - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } - - b.ResetTimer() - b.StartTimer() - - for i := 0; i < len(l); i++ { - tree.Remove(l[i]) - } -} - -func BenchmarkGet(b *testing.B) { - - tree := New(compare.Int) - - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i], i) - } - - b.ResetTimer() - b.StartTimer() - - execCount := 10 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} - -func BenchmarkGodsRBGet(b *testing.B) { - tree := redblacktree.NewWithIntComparator() - - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i], i) - } - - b.ResetTimer() - b.StartTimer() - - execCount := 10 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} +// func TestRemoveAll(t *testing.T) { +// ALL: +// for c := 0; c < 5000; c++ { +// tree := New(compare.Int) +// gods := avltree.NewWithIntComparator() +// var l []int +// m := make(map[int]int) + +// for i := 0; len(l) < 50; i++ { +// v := randomdata.Number(0, 100000) +// if _, ok := m[v]; !ok { +// m[v] = v +// l = append(l, v) +// tree.Put(v, v) +// gods.Put(v, v) +// } +// } + +// for i := 0; i < 50; i++ { + +// tree.Remove(l[i]) +// gods.Remove(l[i]) + +// s1 := spew.Sprint(tree.Values()) +// s2 := spew.Sprint(gods.Values()) +// if s1 != s2 { +// t.Error("avl remove error", "avlsize = ", tree.Size()) +// t.Error(tree.root, i, l[i]) +// t.Error(s1) +// t.Error(s2) +// break ALL +// } +// } +// } +// } + +// func TestRemove(t *testing.T) { + +// ALL: +// for N := 0; N < 5000; N++ { +// tree := New(compare.Int) +// gods := avltree.NewWithIntComparator() + +// var l []int +// m := make(map[int]int) + +// for i := 0; len(l) < 20; i++ { +// v := randomdata.Number(0, 100) +// if _, ok := m[v]; !ok { +// l = append(l, v) +// m[v] = v +// tree.Put(v, v) +// gods.Put(v, v) +// } +// } + +// src1 := tree.String() +// src2 := gods.String() + +// for i := 0; i < 20; i++ { +// tree.Remove(l[i]) +// gods.Remove(l[i]) +// if tree.root != nil && spew.Sprint(gods.Values()) != spew.Sprint(tree.Values()) { +// t.Error(src1) +// t.Error(src2) +// t.Error(tree.debugString()) +// t.Error(gods.String()) +// t.Error(l[i]) +// break ALL +// } +// } +// } +// } + +// func BenchmarkGetRange(b *testing.B) { + +// } + +// func BenchmarkIndexRange(b *testing.B) { +// tree := New(compare.Int) +// l := loadTestData() +// b.N = len(l) + +// for _, v := range l { +// tree.Put(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 5 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for range l { +// tree.IndexRange(i, i+49) +// } +// } +// } + +// func BenchmarkSkipListGet(b *testing.B) { +// sl := skiplist.New(skiplist.Int) +// l := loadTestData() +// b.N = len(l) + +// for _, v := range l { +// sl.Set(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 5 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// sl.Get(v) +// // e := sl.Get(v) +// // var result [50]interface{} +// // for i := 0; i < 50 && e != nil; i++ { +// // result[i] = e.Value +// // e = e.Next() +// // } +// } +// } +// } + +// func BenchmarkSkipListSet(b *testing.B) { + +// l := loadTestData() +// execCount := 1 +// b.N = len(l) * execCount +// for i := 0; i < execCount; i++ { +// sl := skiplist.New(skiplist.Int) +// for _, v := range l { +// sl.Set(v, v) +// } +// } +// } + +// func BenchmarkIterator(b *testing.B) { +// tree := New(compare.Int) + +// l := loadTestData() +// b.N = len(l) + +// for _, v := range l { +// tree.Put(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() +// iter := tree.Iterator() +// b.N = 0 +// for iter.Next() { +// b.N++ +// } +// for iter.Prev() { +// b.N++ +// } +// for iter.Next() { +// b.N++ +// } +// b.Log(b.N, len(l)) +// } + +// func BenchmarkRemove(b *testing.B) { +// tree := New(compare.Int) + +// l := loadTestData() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } + +// func BenchmarkGodsRemove(b *testing.B) { +// tree := avltree.NewWithIntComparator() + +// l := loadTestData() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } + +// func BenchmarkGodsRBRemove(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() + +// l := loadTestData() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } + +// b.ResetTimer() +// b.StartTimer() + +// for i := 0; i < len(l); i++ { +// tree.Remove(l[i]) +// } +// } + +// func BenchmarkGet(b *testing.B) { + +// tree := New(compare.Int) + +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i], i) +// } + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 10 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } + +// func BenchmarkGodsRBGet(b *testing.B) { +// tree := redblacktree.NewWithIntComparator() + +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i], i) +// } + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 10 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } -func BenchmarkGodsAvlGet(b *testing.B) { - tree := avltree.NewWithIntComparator() +// func BenchmarkGodsAvlGet(b *testing.B) { +// tree := avltree.NewWithIntComparator() - l := loadTestData() - b.N = len(l) - for i := 0; i < b.N; i++ { - tree.Put(l[i], i) - } +// l := loadTestData() +// b.N = len(l) +// for i := 0; i < b.N; i++ { +// tree.Put(l[i], i) +// } - b.ResetTimer() - b.StartTimer() - - execCount := 10 - b.N = len(l) * execCount - - for i := 0; i < execCount; i++ { - for _, v := range l { - tree.Get(v) - } - } -} +// b.ResetTimer() +// b.StartTimer() + +// execCount := 10 +// b.N = len(l) * execCount + +// for i := 0; i < execCount; i++ { +// for _, v := range l { +// tree.Get(v) +// } +// } +// } -func BenchmarkPut(b *testing.B) { - l := loadTestData() - - b.ResetTimer() - b.StartTimer() - - execCount := 50 - b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - tree := New(compare.Int) - for _, v := range l { - tree.Put(v, v) - } - } -} - -func TestPutStable(t *testing.T) { - -} - -func BenchmarkGodsRBPut(b *testing.B) { - l := loadTestData() - - b.ResetTimer() - b.StartTimer() - - execCount := 50 - b.N = len(l) * execCount - for i := 0; i < execCount; i++ { - tree := redblacktree.NewWithIntComparator() - for _, v := range l { - tree.Put(v, v) - } - } -} - -func BenchmarkGodsPut(b *testing.B) { - tree := avltree.NewWithIntComparator() - - l := loadTestData() - - b.ResetTimer() - b.StartTimer() - - b.N = len(l) - for _, v := range l { - tree.Put(v, v) - } -} +// func BenchmarkPut(b *testing.B) { +// l := loadTestData() + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 50 +// b.N = len(l) * execCount +// for i := 0; i < execCount; i++ { +// tree := New(compare.Int) +// for _, v := range l { +// tree.Put(v, v) +// } +// } +// } + +// func TestPutStable(t *testing.T) { + +// } + +// func BenchmarkGodsRBPut(b *testing.B) { +// l := loadTestData() + +// b.ResetTimer() +// b.StartTimer() + +// execCount := 50 +// b.N = len(l) * execCount +// for i := 0; i < execCount; i++ { +// tree := redblacktree.NewWithIntComparator() +// for _, v := range l { +// tree.Put(v, v) +// } +// } +// } + +// func BenchmarkGodsPut(b *testing.B) { +// tree := avltree.NewWithIntComparator() + +// l := loadTestData() + +// b.ResetTimer() +// b.StartTimer() + +// b.N = len(l) +// for _, v := range l { +// tree.Put(v, v) +// } +// }