This commit is contained in:
1
2025-06-20 20:07:34 +00:00
parent c6d9db8136
commit e83dec5ffe
2 changed files with 36 additions and 5 deletions

View File

@@ -27,15 +27,24 @@ var bufferpool = &sync.Pool{
} }
// CreateByteArray 创建一个新的ByteArray实例使用指定的字节数组 // CreateByteArray 创建一个新的ByteArray实例使用指定的字节数组
func CreateByteArray(bytes []byte) *ByteArray { func CreateByteArray(bytes ...[]byte) *ByteArray {
ba := bufferpool.Get().(*ByteArray) var ba *ByteArray
ba.buf = bytes if len(bytes) == 0 {//如果是0则为新创建
ba = bufferpool.Get().(*ByteArray)
}else{//读序列
ba =&ByteArray{endian: defaultEndian}
}
for _, num := range bytes {
ba.buf=append(ba.buf, num...)
}
ba.ResetPos() ba.ResetPos()
return ba return ba
} }
// ReleaseByteArray 将ByteArray实例放回池中以便重用 // releaseByteArray 将ByteArray实例放回池中以便重用
func ReleaseByteArray(ba *ByteArray) { func releaseByteArray(ba *ByteArray) {
ba.Reset() ba.Reset()
bufferpool.Put(ba) bufferpool.Put(ba)
} }
@@ -131,6 +140,7 @@ func (ba *ByteArray) Reset() {
// Bytes 返回完整的字节数组 // Bytes 返回完整的字节数组
func (ba *ByteArray) Bytes() []byte { func (ba *ByteArray) Bytes() []byte {
defer releaseByteArray(ba)//这里是写数组,写完后退出时释放线程池
return ba.buf return ba.buf
} }

View File

@@ -0,0 +1,21 @@
package bytearray
import (
"testing"
)
func BenchmarkByteArray(b *testing.B) {
b.ReportAllocs()
//写入
testbyte:=CreateByteArray()
for i := 0; i < b.N; i++ {
testbyte.writeNumber(42)
testbyte.writeNumber(12345.4)
testbyte.writeNumber(123456789)
testbyte.writeNumber(1234567890123456789)
testbyte.WriteString("test string")
testbyte.Bytes()
}
}