github.com/moontrade/nogc@v0.1.7/pointer_test.go (about) 1 package nogc 2 3 //func TestPointerBE(t *testing.T) { 4 // a := NewTLSF(1) 5 // p := Pointer(a.Alloc(32)) 6 // p.SetInt32BE(0, 100) 7 // println(p.Int32BE(0), p.Int32BESlow(), p.Int32(0)) 8 //} 9 // 10 //func BenchmarkPointerBE(b *testing.B) { 11 // a := NewTLSF(1) 12 // p := Pointer(a.Alloc(32)) 13 // 14 // b.Run("Int32", func(b *testing.B) { 15 // for i := 0; i < b.N; i++ { 16 // p.Int32(0) 17 // } 18 // }) 19 // b.Run("Int32BE", func(b *testing.B) { 20 // for i := 0; i < b.N; i++ { 21 // p.Int32BE(0) 22 // } 23 // }) 24 // b.Run("Int32BE Slow", func(b *testing.B) { 25 // for i := 0; i < b.N; i++ { 26 // p.Int32BESlow() 27 // } 28 // }) 29 // b.Run("UInt32BE", func(b *testing.B) { 30 // for i := 0; i < b.N; i++ { 31 // p.UInt32BE(0) 32 // } 33 // }) 34 // b.Run("UInt32BE Slow", func(b *testing.B) { 35 // for i := 0; i < b.N; i++ { 36 // p.UInt32BESlow() 37 // } 38 // }) 39 // b.Run("Int64", func(b *testing.B) { 40 // for i := 0; i < b.N; i++ { 41 // p.Int64(0) 42 // } 43 // }) 44 // b.Run("Int64BE", func(b *testing.B) { 45 // for i := 0; i < b.N; i++ { 46 // p.Int64BE(0) 47 // } 48 // }) 49 // b.Run("UInt64BE", func(b *testing.B) { 50 // for i := 0; i < b.N; i++ { 51 // p.UInt64BE(0) 52 // } 53 // }) 54 // b.Run("UInt64BE Slow", func(b *testing.B) { 55 // for i := 0; i < b.N; i++ { 56 // p.UInt64BESlow() 57 // } 58 // }) 59 //} 60 // 61 ////goland:noinspection GoVetUnsafePointer 62 //func (p Pointer) Int16BESlow() int16 { 63 // return int16(*(*byte)(unsafe.Pointer(p + 1))) | 64 // int16(*(*byte)(unsafe.Pointer(p)))<<8 65 //} 66 // 67 ////goland:noinspection GoVetUnsafePointer 68 //func (p Pointer) UInt24BESlow() uint32 { 69 // return uint32(*(*byte)(unsafe.Pointer(p + 2))) | 70 // uint32(*(*byte)(unsafe.Pointer(p + 1)))<<8 | 71 // uint32(*(*byte)(unsafe.Pointer(p)))<<16 72 //} 73 // 74 ////goland:noinspection GoVetUnsafePointer 75 //func (p Pointer) UInt32LESlow() uint32 { 76 // return uint32(*(*byte)(unsafe.Pointer(p + 3))) | 77 // uint32(*(*byte)(unsafe.Pointer(p + 2)))<<8 | 78 // uint32(*(*byte)(unsafe.Pointer(p + 1)))<<16 | 79 // uint32(*(*byte)(unsafe.Pointer(p)))<<24 80 //} 81 // 82 ////goland:noinspection GoVetUnsafePointer 83 //func (p Pointer) UInt64BESlow() uint64 { 84 // return uint64(*(*byte)(unsafe.Pointer(p + 7))) | 85 // uint64(*(*byte)(unsafe.Pointer(p + 6)))<<8 | 86 // uint64(*(*byte)(unsafe.Pointer(p + 5)))<<16 | 87 // uint64(*(*byte)(unsafe.Pointer(p + 4)))<<24 | 88 // uint64(*(*byte)(unsafe.Pointer(p + 3)))<<32 | 89 // uint64(*(*byte)(unsafe.Pointer(p + 2)))<<40 | 90 // uint64(*(*byte)(unsafe.Pointer(p + 1)))<<48 | 91 // uint64(*(*byte)(unsafe.Pointer(p)))<<56 92 //} 93 // 94 ////goland:noinspection GoVetUnsafePointer 95 //func (p Pointer) Int32BESlow() int32 { 96 // return int32(*(*byte)(unsafe.Pointer(p + 3))) | 97 // int32(*(*byte)(unsafe.Pointer(p + 2)))<<8 | 98 // int32(*(*byte)(unsafe.Pointer(p + 1)))<<16 | 99 // int32(*(*byte)(unsafe.Pointer(p)))<<24 100 //} 101 // 102 //func BenchmarkPointerBESet(b *testing.B) { 103 // a := NewTLSF(1) 104 // p := Pointer(a.Alloc(32)) 105 // 106 // b.Run("SetInt32At", func(b *testing.B) { 107 // for i := 0; i < b.N; i++ { 108 // p.SetInt32BE(8, 1) 109 // } 110 // }) 111 // b.Run("SetInt32BEAtSlow", func(b *testing.B) { 112 // for i := 0; i < b.N; i++ { 113 // //p.SetInt32BEAtSlow(8, 1) 114 // } 115 // }) 116 // 117 //}