Skip to content

Commit a48d892

Browse files
committed
optimize: static allocation for output symbols
80.8 ns/op
1 parent 0d3ae7f commit a48d892

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

xxd.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,13 @@ const (
3232
line_length = 50
3333
)
3434

35+
var (
36+
space = []byte(" ")
37+
doubleSpace = []byte(" ")
38+
dot = []byte(".")
39+
newline = []byte("\n")
40+
)
41+
3542
func XXD(r io.Reader, w io.Writer) error {
3643
line_offset := 0
3744

@@ -54,31 +61,31 @@ func XXD(r io.Reader, w io.Writer) error {
5461
w.Write(hexChar)
5562

5663
if i%2 == 1 {
57-
io.WriteString(w, " ")
64+
w.Write(space)
5865
}
5966
}
6067
if n < len(buf) {
6168
for i := n; i < len(buf); i++ {
62-
io.WriteString(w, " ")
69+
w.Write(doubleSpace)
6370
if i%2 == 1 {
64-
io.WriteString(w, " ")
71+
w.Write(space)
6572
}
6673
}
6774
}
6875

69-
io.WriteString(w, " ")
76+
w.Write(space)
7077

7178
// Character values
7279
b := buf[:n]
7380
for _, c := range b {
7481
if c > 0x1f && c < 0x7f {
7582
io.WriteString(w, string(c))
7683
} else {
77-
io.WriteString(w, ".")
84+
w.Write(dot)
7885
}
7986
}
8087

81-
io.WriteString(w, "\n")
88+
w.Write(newline)
8289
}
8390
return nil
8491
}

0 commit comments

Comments
 (0)