github.com/moontrade/nogc@v0.1.7/collections/tree/art_cgo_unsafe_test.go (about) 1 package tree 2 3 // 4 //func TestNew(t *testing.T) { 5 // println("sizeof Leaf", unsafe.Sizeof(Leaf{})) 6 // art, _ := New() 7 // art.InsertBytes(nogc.BytesOfString("hello"), 1000) 8 // art.InsertBytes(nogc.BytesOfString("below"), 5000) 9 // art.InsertString("hello01", 8700) 10 // found := art.FindBytes(nogc.BytesOfString("hello")) 11 // println("found", uint(found)) 12 // println("size", art.Size()) 13 // min := art.Minimum() 14 // println("min", uint(min.Data()), "key", min.Key().String()) 15 // max := art.Maximum() 16 // println("max", uint(max.Data()), "key", max.Key().String()) 17 // art.Free() 18 //} 19 // 20 //func BenchmarkTree_Insert(b *testing.B) { 21 // b.Run("insert int32BE", func(b *testing.B) { 22 // art, _ := New() 23 // key := nogc.AllocBytes(4) 24 // 25 // //println(art.String()) 26 // b.ResetTimer() 27 // b.ReportAllocs() 28 // for i := 0; i < b.N; i++ { 29 // key.SetInt32BE(0, int32(i)) 30 // art.InsertBytes(key, 0) 31 // } 32 // b.StopTimer() 33 // art.Free() 34 // key.Free() 35 // }) 36 // b.Run("insert int32LE", func(b *testing.B) { 37 // art, _ := New() 38 // key := nogc.AllocBytes(4) 39 // 40 // //println(art.String()) 41 // b.ResetTimer() 42 // b.ReportAllocs() 43 // for i := 0; i < b.N; i++ { 44 // key.SetInt32LE(0, int32(i)) 45 // art.InsertBytes(key, 0) 46 // } 47 // b.StopTimer() 48 // art.Free() 49 // key.Free() 50 // }) 51 // b.Run("insert int64BE", func(b *testing.B) { 52 // art, _ := New() 53 // key := nogc.AllocBytes(8) 54 // 55 // //println(art.String()) 56 // b.ResetTimer() 57 // b.ReportAllocs() 58 // for i := 0; i < b.N; i++ { 59 // key.SetInt64BE(0, int64(i)) 60 // art.InsertBytes(key, 0) 61 // } 62 // b.StopTimer() 63 // art.Free() 64 // key.Free() 65 // }) 66 // b.Run("insert int64LE", func(b *testing.B) { 67 // art, _ := New() 68 // key := nogc.AllocBytes(8) 69 // 70 // //println(art.String()) 71 // b.ResetTimer() 72 // b.ReportAllocs() 73 // for i := 0; i < b.N; i++ { 74 // key.SetInt64LE(0, int64(i)) 75 // art.InsertBytes(key, 0) 76 // } 77 // b.StopTimer() 78 // art.Free() 79 // key.Free() 80 // }) 81 // b.Run("insert int64 PointerSet", func(b *testing.B) { 82 // m := nogc.NewPointerSet(uintptr(b.N * 2)) 83 // key := nogc.AllocBytes(8) 84 // 85 // //println(art.String()) 86 // b.ResetTimer() 87 // b.ReportAllocs() 88 // for i := 0; i < b.N; i++ { 89 // key.SetInt64BE(0, int64(i)) 90 // m.Put(uintptr(i)) 91 // } 92 // b.StopTimer() 93 // key.Free() 94 // _ = m.Close() 95 // }) 96 // b.Run("insert int64 gomap", func(b *testing.B) { 97 // m := make(map[int64]struct{}, b.N*2) 98 // key := nogc.AllocBytes(8) 99 // 100 // //println(art.String()) 101 // b.ResetTimer() 102 // b.ReportAllocs() 103 // for i := 0; i < b.N; i++ { 104 // m[int64(i)] = struct{}{} 105 // } 106 // b.StopTimer() 107 // key.Free() 108 // }) 109 //} 110 // 111 //func BenchmarkTree_Find(b *testing.B) { 112 // runInt64BE := func(entries int) { 113 // art, _ := New() 114 // defer art.Free() 115 // key := nogc.AllocBytes(8) 116 // defer key.Free() 117 // 118 // for i := 0; i < entries; i++ { 119 // key.SetInt64BE(0, int64(i)) 120 // art.InsertBytes(key, 0) 121 // } 122 // 123 // b.Run("int64BE "+strconv.Itoa(entries)+" entries", func(b *testing.B) { 124 // key.SetInt64BE(0, int64(entries/2)) 125 // b.ResetTimer() 126 // b.ReportAllocs() 127 // for i := 0; i < b.N; i++ { 128 // key.SetInt64BE(0, int64(i)) 129 // art.FindBytes(key) 130 // } 131 // b.StopTimer() 132 // }) 133 // } 134 // runInt64BE(10) 135 // runInt64BE(100) 136 // runInt64BE(1000) 137 // runInt64BE(10000) 138 // runInt64BE(100000) 139 // runInt64BE(1000000) 140 // runInt64BE(10000000) 141 //}