txscript: Optimize DisasmString function.
This commit modifies the DisasmString function to use a bytes buffer for constructing the disassembled string instead of naive string concatenation. This makes a huge difference when disassembling scripts with large numbers of opcodes.
This commit is contained in:
parent
79aac01b02
commit
064cc8e7c3
1 changed files with 7 additions and 6 deletions
|
@ -198,18 +198,19 @@ func unparseScript(pops []parsedOpcode) ([]byte, error) {
|
|||
// appended. In addition, the reason the script failed to parse is returned
|
||||
// if the caller wants more information about the failure.
|
||||
func DisasmString(buf []byte) (string, error) {
|
||||
disbuf := ""
|
||||
var disbuf bytes.Buffer
|
||||
opcodes, err := parseScript(buf)
|
||||
for _, pop := range opcodes {
|
||||
disbuf += pop.print(true) + " "
|
||||
disbuf.WriteString(pop.print(true))
|
||||
disbuf.WriteByte(' ')
|
||||
}
|
||||
if disbuf != "" {
|
||||
disbuf = disbuf[:len(disbuf)-1]
|
||||
if disbuf.Len() > 0 {
|
||||
disbuf.Truncate(disbuf.Len() - 1)
|
||||
}
|
||||
if err != nil {
|
||||
disbuf += "[error]"
|
||||
disbuf.WriteString("[error]")
|
||||
}
|
||||
return disbuf, err
|
||||
return disbuf.String(), err
|
||||
}
|
||||
|
||||
// removeOpcode will remove any opcode matching ``opcode'' from the opcode
|
||||
|
|
Loading…
Add table
Reference in a new issue