80 lines
1.4 KiB
Go
80 lines
1.4 KiB
Go
/*
|
|
* Copyright (C) THL A29 Limited, a Tencent company. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*
|
|
*/
|
|
|
|
package lockfree
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
"testing"
|
|
"time"
|
|
"unsafe"
|
|
)
|
|
|
|
func TestA(t *testing.T) {
|
|
sli := make([]uint8, 8)
|
|
sh := *(*reflect.SliceHeader)(unsafe.Pointer(&sli))
|
|
mem := unsafe.Pointer(sh.Data)
|
|
Sets(mem)
|
|
fmt.Printf("%v\n", sli[0])
|
|
fmt.Printf("%v\n", sli[1])
|
|
fmt.Printf("%v\n", sli[2])
|
|
fmt.Printf("%v\n", sli[3])
|
|
fmt.Printf("%v\n", sli[4])
|
|
fmt.Printf("%v\n", sli[5])
|
|
fmt.Printf("%v\n", sli[6])
|
|
fmt.Printf("%v\n", sli[7])
|
|
}
|
|
|
|
func Sets(mem unsafe.Pointer) {
|
|
for i := 0; i < 8; i++ {
|
|
*(*uint8)(unsafe.Pointer(uintptr(mem) + uintptr(i))) = 1
|
|
}
|
|
}
|
|
|
|
func TestX(t *testing.T) {
|
|
loop := 1000000
|
|
l := 1024 * 1024
|
|
bytes := make([]byte, l)
|
|
ts := time.Now()
|
|
for i := 0; i < loop; i++ {
|
|
bytes[i] = 0x01
|
|
}
|
|
tl := time.Since(ts)
|
|
fmt.Println(tl.Microseconds())
|
|
}
|
|
|
|
func TestBuffer(t *testing.T) {
|
|
buf := newRingBuffer[uint64](1024)
|
|
buf.write(0, 1)
|
|
x := buf.element(0)
|
|
fmt.Println(x)
|
|
|
|
buf.write(1023, 2)
|
|
x = buf.element(1023)
|
|
fmt.Println(x)
|
|
|
|
buf.write(1024, 3)
|
|
x = buf.element(1024)
|
|
fmt.Println(x)
|
|
}
|
|
|
|
func TestBufferAlign32(t *testing.T) {
|
|
buf := newRingBuffer[uint32](1024)
|
|
buf.write(0, 1)
|
|
x := buf.element(0)
|
|
fmt.Println(x)
|
|
|
|
buf.write(1023, 2)
|
|
x = buf.element(1023)
|
|
fmt.Println(x)
|
|
|
|
buf.write(1024, 3)
|
|
x = buf.element(1024)
|
|
fmt.Println(x)
|
|
}
|