From 4e8e63e0d721a37994263ad25fba173a16a55a28 Mon Sep 17 00:00:00 2001 From: Dave Collins Date: Wed, 4 Jun 2014 22:12:47 -0500 Subject: [PATCH] Use bytes.NewReader for all deserialization. Rather than using bytes.NewBuffer, which is a read/write entity (io.ReadWriter), use bytes.NewReader which is only a read entitiy (io.Reader). Benchmarking shows it's slightly faster and it's also technically more accurate since it ensures the data is read-only. --- chain.go | 2 +- rawtransactions.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/chain.go b/chain.go index 0b18faa5..5808dd2a 100644 --- a/chain.go +++ b/chain.go @@ -83,7 +83,7 @@ func (r FutureGetBlockResult) Receive() (*btcutil.Block, error) { // Deserialize the block and return it. var msgBlock btcwire.MsgBlock - msgBlock.Deserialize(bytes.NewBuffer(serializedBlock)) + msgBlock.Deserialize(bytes.NewReader(serializedBlock)) if err != nil { return nil, err } diff --git a/rawtransactions.go b/rawtransactions.go index d1657ff9..95a7abec 100644 --- a/rawtransactions.go +++ b/rawtransactions.go @@ -83,7 +83,7 @@ func (r FutureGetRawTransactionResult) Receive() (*btcutil.Tx, error) { // Deserialize the transaction and return it. var msgTx btcwire.MsgTx - if err := msgTx.Deserialize(bytes.NewBuffer(serializedTx)); err != nil { + if err := msgTx.Deserialize(bytes.NewReader(serializedTx)); err != nil { return nil, err } return btcutil.NewTx(&msgTx), nil @@ -240,7 +240,7 @@ func (r FutureCreateRawTransactionResult) Receive() (*btcwire.MsgTx, error) { // Deserialize the transaction and return it. var msgTx btcwire.MsgTx - if err := msgTx.Deserialize(bytes.NewBuffer(serializedTx)); err != nil { + if err := msgTx.Deserialize(bytes.NewReader(serializedTx)); err != nil { return nil, err } return &msgTx, nil @@ -357,7 +357,7 @@ func (r FutureSignRawTransactionResult) Receive() (*btcwire.MsgTx, bool, error) // Deserialize the transaction and return it. var msgTx btcwire.MsgTx - if err := msgTx.Deserialize(bytes.NewBuffer(serializedTx)); err != nil { + if err := msgTx.Deserialize(bytes.NewReader(serializedTx)); err != nil { return nil, false, err }