err error
callTree string
copyResBuf []byte
+ brR *br.Reader
+ gzR *gzip.Reader
l sync.RWMutex
}
if compress_type := resp.Header[`Content-Encoding`]; len(compress_type) != 0 {
switch compress_type[0] {
case `br`:
- resReadCloser = pio.RWC{R: br.NewReader(resp.Body).Read}
+ if t.brR == nil {
+ t.brR = br.NewReader(resp.Body)
+ } else {
+ t.brR.Reset(resp.Body)
+ }
+ resReadCloser = pio.RWC{R: t.brR.Read}
case `gzip`:
- resReadCloser, _ = gzip.NewReader(resp.Body)
+ if t.gzR == nil {
+ t.gzR, _ = gzip.NewReader(resp.Body)
+ } else {
+ t.gzR.Reset(resp.Body)
+ }
+ resReadCloser = t.gzR
case `deflate`:
resReadCloser = flate.NewReader(resp.Body)
default:
}
}
+func Benchmark_req10(b *testing.B) {
+ b.ResetTimer()
+ for i := 0; i < b.N; i++ {
+ // reuse.Reqf(Rval{
+ // Url: "http://" + addr + "/br",
+ // })
+ // reuse.Respon(func(buf []byte) error {
+ // if !bytes.Equal([]byte("abc强强强强"), buf) {
+ // b.Fail()
+ // }
+ // return nil
+ // })
+ reuse.Reqf(Rval{
+ Url: "http://" + addr + "/gzip",
+ })
+ reuse.Respon(func(buf []byte) error {
+ if !bytes.Equal([]byte("abc强强强强"), buf) {
+ b.Error("gzip fail")
+ }
+ return nil
+ })
+ }
+}
+
func Test_req(t *testing.T) {
reuse.Reqf(Rval{
Url: "http://" + addr + "/br",