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  //}