Speeds up linking cmd/go by ~1.5%:
name old s/op new s/op delta
LinkCmdGo 0.58 ± 6% 0.57 ± 5% -1.21% (p=0.000 n=98+99)
Less noisy benchmark, with garbage collection off:
name old s/op new s/op delta
LinkCmdGo 0.49 ± 2% 0.49 ± 2% -1.79% (p=0.000 n=98+99)
Change-Id: I0123bcb66a87cbc4d703356e4c5a4035032012ec
Reviewed-on: https://go-review.googlesource.com/20916
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
linelen int
}
+func (b *Biobuf) Reader() *bufio.Reader { return b.r }
+
func Bopenw(name string) (*Biobuf, error) {
f, err := os.Create(name)
if err != nil {
}
func rdint64(f *obj.Biobuf) int64 {
- var c int
-
+ r := f.Reader()
uv := uint64(0)
- for shift := 0; ; shift += 7 {
+ for shift := uint(0); ; shift += 7 {
if shift >= 64 {
log.Fatalf("corrupt input")
}
- c = obj.Bgetc(f)
- uv |= uint64(c&0x7F) << uint(shift)
+ c, err := r.ReadByte()
+ if err != nil {
+ log.Fatalln("error reading input: ", err)
+ }
+ uv |= uint64(c&0x7F) << shift
if c&0x80 == 0 {
break
}