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实例使用指定的字节数组
func CreateByteArray(bytes []byte) *ByteArray {
ba := bufferpool.Get().(*ByteArray)
ba.buf = bytes
func CreateByteArray(bytes ...[]byte) *ByteArray {
var ba *ByteArray
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()
return ba
}
// ReleaseByteArray 将ByteArray实例放回池中以便重用
func ReleaseByteArray(ba *ByteArray) {
// releaseByteArray 将ByteArray实例放回池中以便重用
func releaseByteArray(ba *ByteArray) {
ba.Reset()
bufferpool.Put(ba)
}
@@ -131,6 +140,7 @@ func (ba *ByteArray) Reset() {
// Bytes 返回完整的字节数组
func (ba *ByteArray) Bytes() []byte {
defer releaseByteArray(ba)//这里是写数组,写完后退出时释放线程池
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()
}
}