mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-05-19 13:26:47 +00:00
Optimize readTxIn.
Before: BenchmarkReadTxIn 1000000 2435 ns/op After: BenchmarkReadTxIn 1000000 1427 ns/op This is part of the ongoing effort to optimize serialization as noted in conformal/btcd#27.
This commit is contained in:
parent
1fe9f9e165
commit
59da692131
10
msgtx.go
10
msgtx.go
@ -451,7 +451,7 @@ func writeOutPoint(w io.Writer, pver uint32, version uint32, op *OutPoint) error
|
|||||||
// readTxIn reads the next sequence of bytes from r as a transaction input
|
// readTxIn reads the next sequence of bytes from r as a transaction input
|
||||||
// (TxIn).
|
// (TxIn).
|
||||||
func readTxIn(r io.Reader, pver uint32, version uint32, ti *TxIn) error {
|
func readTxIn(r io.Reader, pver uint32, version uint32, ti *TxIn) error {
|
||||||
op := OutPoint{}
|
var op OutPoint
|
||||||
err := readOutPoint(r, pver, version, &op)
|
err := readOutPoint(r, pver, version, &op)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -474,16 +474,18 @@ func readTxIn(r io.Reader, pver uint32, version uint32, ti *TxIn) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
b := make([]byte, count)
|
b := make([]byte, count)
|
||||||
err = readElement(r, b)
|
_, err = io.ReadFull(r, b)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
ti.SignatureScript = b
|
ti.SignatureScript = b
|
||||||
|
|
||||||
err = readElement(r, &ti.Sequence)
|
b = make([]byte, 4)
|
||||||
|
_, err = io.ReadFull(r, b)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
ti.Sequence = binary.LittleEndian.Uint32(b)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -521,10 +523,10 @@ func writeTxIn(w io.Writer, pver uint32, version uint32, ti *TxIn) error {
|
|||||||
func readTxOut(r io.Reader, pver uint32, version uint32, to *TxOut) error {
|
func readTxOut(r io.Reader, pver uint32, version uint32, to *TxOut) error {
|
||||||
buf := make([]byte, 8)
|
buf := make([]byte, 8)
|
||||||
_, err := io.ReadFull(r, buf)
|
_, err := io.ReadFull(r, buf)
|
||||||
to.Value = int64(binary.LittleEndian.Uint64(buf))
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
to.Value = int64(binary.LittleEndian.Uint64(buf))
|
||||||
|
|
||||||
count, err := readVarInt(r, pver)
|
count, err := readVarInt(r, pver)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user