1
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
21
common/bytearray/bytearray_test.go
Normal file
21
common/bytearray/bytearray_test.go
Normal 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()
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user