Ver código fonte

codec: binc should not use sync.Pool for symbols support

Ugorji Nwoke 6 anos atrás
pai
commit
228d245bc4
2 arquivos alterados com 27 adições e 25 exclusões
  1. 8 6
      codec/binc.go
  2. 19 19
      codec/helper.go

+ 8 - 6
codec/binc.go

@@ -272,7 +272,8 @@ func (e *bincEncDriver) EncodeSymbol(v string) {
 		return
 	}
 	if e.m == nil {
-		e.m = pool4mapStrU16.Get().(map[string]uint16)
+		// e.m = pool4mapStrU16.Get().(map[string]uint16)
+		e.m = make(map[string]uint16, 16)
 	}
 	ui, ok := e.m[v]
 	if ok {
@@ -730,7 +731,8 @@ func (d *bincDecDriver) decStringBytes(bs []byte, zerocopy bool) (bs2 []byte) {
 			symbol = uint16(bigen.Uint16(d.r.readx(2)))
 		}
 		if d.s == nil {
-			d.s = pool4mapU16Bytes.Get().(map[uint16][]byte) // make([]bincDecSymbol, 0, 16)
+			// d.s = pool4mapU16Bytes.Get().(map[uint16][]byte) // make([]bincDecSymbol, 0, 16)
+			d.s = make(map[uint16][]byte, 16)
 		}
 
 		if vs&0x4 == 0 {
@@ -1007,8 +1009,8 @@ func (e *bincEncDriver) atEndOfEncode() {
 		for k := range e.m {
 			delete(e.m, k)
 		}
-		pool4mapStrU16.Put(e.m)
-		e.m = nil
+		// pool4mapStrU16.Put(e.m)
+		// e.m = nil
 	}
 }
 
@@ -1024,8 +1026,8 @@ func (d *bincDecDriver) atEndOfDecode() {
 		for k := range d.s {
 			delete(d.s, k)
 		}
-		pool4mapU16Bytes.Put(d.s)
-		d.s = nil
+		// pool4mapU16Bytes.Put(d.s)
+		// d.s = nil
 	}
 }
 

+ 19 - 19
codec/helper.go

@@ -182,26 +182,26 @@ var (
 var (
 	pool4tiload = sync.Pool{New: func() interface{} { return new(typeInfoLoadArray) }}
 
-	pool4sfiRv8   = sync.Pool{New: func() interface{} { return new([8]sfiRv) }}
-	pool4sfiRv16  = sync.Pool{New: func() interface{} { return new([16]sfiRv) }}
-	pool4sfiRv32  = sync.Pool{New: func() interface{} { return new([32]sfiRv) }}
-	pool4sfiRv64  = sync.Pool{New: func() interface{} { return new([64]sfiRv) }}
-	pool4sfiRv128 = sync.Pool{New: func() interface{} { return new([128]sfiRv) }}
-
-	// dn = sync.Pool{ New: func() interface{} { x := new(decNaked); x.init(); return x } }
-
-	pool4buf256 = sync.Pool{New: func() interface{} { return new([256]byte) }}
-	pool4buf1k  = sync.Pool{New: func() interface{} { return new([1 * 1024]byte) }}
-	pool4buf2k  = sync.Pool{New: func() interface{} { return new([2 * 1024]byte) }}
-	pool4buf4k  = sync.Pool{New: func() interface{} { return new([4 * 1024]byte) }}
-	pool4buf8k  = sync.Pool{New: func() interface{} { return new([8 * 1024]byte) }}
-	pool4buf16k = sync.Pool{New: func() interface{} { return new([16 * 1024]byte) }}
-	pool4buf32k = sync.Pool{New: func() interface{} { return new([32 * 1024]byte) }}
-	pool4buf64k = sync.Pool{New: func() interface{} { return new([64 * 1024]byte) }}
-
-	pool4mapStrU16 = sync.Pool{New: func() interface{} { return make(map[string]uint16, 16) }}
+	// pool4sfiRv8   = sync.Pool{New: func() interface{} { return new([8]sfiRv) }}
+	// pool4sfiRv16  = sync.Pool{New: func() interface{} { return new([16]sfiRv) }}
+	// pool4sfiRv32  = sync.Pool{New: func() interface{} { return new([32]sfiRv) }}
+	// pool4sfiRv64  = sync.Pool{New: func() interface{} { return new([64]sfiRv) }}
+	// pool4sfiRv128 = sync.Pool{New: func() interface{} { return new([128]sfiRv) }}
+
+	// // dn = sync.Pool{ New: func() interface{} { x := new(decNaked); x.init(); return x } }
+
+	// pool4buf256 = sync.Pool{New: func() interface{} { return new([256]byte) }}
+	// pool4buf1k  = sync.Pool{New: func() interface{} { return new([1 * 1024]byte) }}
+	// pool4buf2k  = sync.Pool{New: func() interface{} { return new([2 * 1024]byte) }}
+	// pool4buf4k  = sync.Pool{New: func() interface{} { return new([4 * 1024]byte) }}
+	// pool4buf8k  = sync.Pool{New: func() interface{} { return new([8 * 1024]byte) }}
+	// pool4buf16k = sync.Pool{New: func() interface{} { return new([16 * 1024]byte) }}
+	// pool4buf32k = sync.Pool{New: func() interface{} { return new([32 * 1024]byte) }}
+	// pool4buf64k = sync.Pool{New: func() interface{} { return new([64 * 1024]byte) }}
+
+	// pool4mapStrU16 = sync.Pool{New: func() interface{} { return make(map[string]uint16, 16) }}
 	// pool4mapU16Str   = sync.Pool{New: func() interface{} { return make(map[uint16]string, 16) }}
-	pool4mapU16Bytes = sync.Pool{New: func() interface{} { return make(map[uint16][]byte, 16) }}
+	// pool4mapU16Bytes = sync.Pool{New: func() interface{} { return make(map[uint16][]byte, 16) }}
 )
 
 func init() {