]> Cypherpunks repositories - gostls13.git/commitdiff
io/ioutil: improve performance of ioutil.Discard
authorMike Solomon <msolo@gmail.com>
Wed, 20 Jul 2011 21:34:49 +0000 (14:34 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Wed, 20 Jul 2011 21:34:49 +0000 (14:34 -0700)
Fixes #2084.

R=bradfitz, rsc
CC=golang-dev
https://golang.org/cl/4817041

src/pkg/io/ioutil/ioutil.go

index f79bf87f5cc4c6b9107642ac3f8d57e83c47ed11..fffa1320f593bc005e252b94e3e5ac40623f151e 100644 (file)
@@ -108,6 +108,23 @@ func (devNull) Write(p []byte) (int, os.Error) {
        return len(p), nil
 }
 
+var blackHole = make([]byte, 8192)
+
+func (devNull) ReadFrom(r io.Reader) (n int64, err os.Error) {
+       readSize := 0
+       for {
+               readSize, err = r.Read(blackHole)
+               n += int64(readSize)
+               if err != nil {
+                       if err == os.EOF {
+                               return n, nil
+                       }
+                       return
+               }
+       }
+       panic("unreachable")
+}
+
 // Discard is an io.Writer on which all Write calls succeed
 // without doing anything.
 var Discard io.Writer = devNull(0)