소스 검색

codec: (minor performance): if d.d.bytes, call into rb directly

Ugorji Nwoke 6 년 전
부모
커밋
084bffbbe8
5개의 변경된 파일13개의 추가작업 그리고 14개의 파일을 삭제
  1. 4 4
      codec/binc.go
  2. 1 1
      codec/cbor.go
  3. 3 3
      codec/msgpack.go
  4. 2 3
      codec/reader.go
  5. 3 3
      codec/simple.go

+ 4 - 4
codec/binc.go

@@ -743,7 +743,7 @@ func (d *bincDecDriver) decStringBytes(bs []byte, zerocopy bool) (bs2 []byte) {
 		slen = d.decLen()
 		if zerocopy {
 			if d.d.bytes {
-				bs2 = d.d.decRd.readx(uint(slen))
+				bs2 = d.d.decRd.rb.readx(uint(slen))
 			} else if len(bs) == 0 {
 				bs2 = decByteSlice(d.d.r(), slen, d.d.h.MaxInitLen, d.d.b[:])
 			} else {
@@ -831,7 +831,7 @@ func (d *bincDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte) {
 	d.bdRead = false
 	if zerocopy {
 		if d.d.bytes {
-			return d.d.decRd.readx(uint(clen))
+			return d.d.decRd.rb.readx(uint(clen))
 		} else if len(bs) == 0 {
 			bs = d.d.b[:]
 		}
@@ -869,7 +869,7 @@ func (d *bincDecDriver) decodeExtV(verifyTag bool, tag byte) (xtag byte, xbs []b
 			return
 		}
 		if d.d.bytes {
-			xbs = d.d.decRd.readx(uint(l))
+			xbs = d.d.decRd.rb.readx(uint(l))
 		} else {
 			xbs = decByteSlice(d.d.r(), l, d.d.h.MaxInitLen, d.d.b[:])
 		}
@@ -959,7 +959,7 @@ func (d *bincDecDriver) DecodeNaked() {
 		l := d.decLen()
 		n.u = uint64(d.d.decRd.readn1())
 		if d.d.bytes {
-			n.l = d.d.decRd.readx(uint(l))
+			n.l = d.d.decRd.rb.readx(uint(l))
 		} else {
 			n.l = decByteSlice(d.d.r(), l, d.d.h.MaxInitLen, d.d.b[:])
 		}

+ 1 - 1
codec/cbor.go

@@ -665,7 +665,7 @@ func (d *cborDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte) {
 	d.bdRead = false
 	if zerocopy {
 		if d.d.bytes {
-			return d.d.decRd.readx(uint(clen))
+			return d.d.decRd.rb.readx(uint(clen))
 		} else if len(bs) == 0 {
 			bs = d.d.b[:]
 		}

+ 3 - 3
codec/msgpack.go

@@ -586,7 +586,7 @@ func (d *msgpackDecDriver) DecodeNaked() {
 				n.v = valueTypeTime
 				n.t = d.decodeTime(clen)
 			} else if d.d.bytes {
-				n.l = d.d.decRd.readx(uint(clen))
+				n.l = d.d.decRd.rb.readx(uint(clen))
 			} else {
 				n.l = decByteSlice(d.d.r(), clen, d.d.h.MaxInitLen, d.d.b[:])
 			}
@@ -764,7 +764,7 @@ func (d *msgpackDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte)
 	d.bdRead = false
 	if zerocopy {
 		if d.d.bytes {
-			return d.d.decRd.readx(uint(clen))
+			return d.d.decRd.rb.readx(uint(clen))
 		} else if len(bs) == 0 {
 			bs = d.d.b[:]
 		}
@@ -978,7 +978,7 @@ func (d *msgpackDecDriver) decodeExtV(verifyTag bool, tag byte) (xtag byte, xbs
 			return
 		}
 		if d.d.bytes {
-			xbs = d.d.decRd.readx(uint(clen))
+			xbs = d.d.decRd.rb.readx(uint(clen))
 		} else {
 			xbs = decByteSlice(d.d.r(), clen, d.d.h.MaxInitLen, d.d.b[:])
 		}

+ 2 - 3
codec/reader.go

@@ -1098,10 +1098,9 @@ func (z *decRd) readUntil(stop byte, includeLast bool) (out []byte) {
 func (z *decRd) readNumberWithLastByte() []byte {
 	if z.bytes {
 		return z.rb.readNumberWithLastByte()
-	} else {
-		z.unreadn1()
-		return z.readTo(&numCharBitset)
 	}
+	z.unreadn1()
+	return z.readTo(&numCharBitset)
 }
 
 /*

+ 3 - 3
codec/simple.go

@@ -444,7 +444,7 @@ func (d *simpleDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte) {
 	d.bdRead = false
 	if zerocopy {
 		if d.d.bytes {
-			return d.d.decRd.readx(uint(clen))
+			return d.d.decRd.rb.readx(uint(clen))
 		} else if len(bs) == 0 {
 			bs = d.d.b[:]
 		}
@@ -500,7 +500,7 @@ func (d *simpleDecDriver) decodeExtV(verifyTag bool, tag byte) (xtag byte, xbs [
 			return
 		}
 		if d.d.bytes {
-			xbs = d.d.decRd.readx(uint(l))
+			xbs = d.d.decRd.rb.readx(uint(l))
 		} else {
 			xbs = decByteSlice(d.d.r(), l, d.d.h.MaxInitLen, d.d.b[:])
 		}
@@ -566,7 +566,7 @@ func (d *simpleDecDriver) DecodeNaked() {
 		l := d.decLen()
 		n.u = uint64(d.d.decRd.readn1())
 		if d.d.bytes {
-			n.l = d.d.decRd.readx(uint(l))
+			n.l = d.d.decRd.rb.readx(uint(l))
 		} else {
 			n.l = decByteSlice(d.d.r(), l, d.d.h.MaxInitLen, d.d.b[:])
 		}