From 73f4ee623b335b363b3d155870c6e9aa0a00ddef Mon Sep 17 00:00:00 2001 From: Dave Collins Date: Wed, 6 Nov 2013 07:37:34 -0600 Subject: [PATCH] Optimize readOutPoint. Before: BenchmarkReadOutPoint 500000 2946 ns/op After: BenchmarkReadOutPoint 5000000 582 ns/op This is part ef the ongoing effort to optimize serialization as noted in conformal/btcd#27. --- msgtx.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/msgtx.go b/msgtx.go index 7c941455..891bb5da 100644 --- a/msgtx.go +++ b/msgtx.go @@ -417,10 +417,17 @@ func NewMsgTx() *MsgTx { // readOutPoint reads the next sequence of bytes from r as an OutPoint. func readOutPoint(r io.Reader, pver uint32, version uint32, op *OutPoint) error { - err := readElements(r, &op.Hash, &op.Index) + _, err := io.ReadFull(r, op.Hash[:]) if err != nil { return err } + + buf := make([]byte, 4) + _, err = io.ReadFull(r, buf) + if err != nil { + return err + } + op.Index = binary.LittleEndian.Uint32(buf) return nil }