Commit 6318dab
committed
xts: avoid redundant bounds checks
Small changes to improve performance of xts by about 6%.
This removes all bounds checks, which can be verified by running:
go build -gcflags="-d=ssa/check_bce/debug=1" .
Before this would show mutiple Found IsInBounds/IsSliceInBounds in the
inner loops of Encrypt and Decrypt.
Tweaked the benchmark to use a larger buffer to make the improvement
more visible. XTS is often used with disk sector sizes, so larger values
are appropriate.
goos: linux
goarch: amd64
pkg: golang.org/x/crypto/xts
cpu: Intel(R) Xeon(R) W-2135 CPU @ 3.70GHz
│ before.txt │ after.txt │
│ sec/op │ sec/op vs base │
XTS-12 1.720µ ± 2% 1.619µ ± 2% -5.87% (p=0.000 n=10)
│ before.txt │ after.txt │
│ B/s │ B/s vs base │
XTS-12 177.4Mi ± 2% 188.5Mi ± 2% +6.24% (p=0.000 n=10)
│ before.txt │ after.txt │
│ B/op │ B/op vs base │
XTS-12 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
¹ all samples are equal
│ before.txt │ after.txt │
│ allocs/op │ allocs/op vs base │
XTS-12 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
¹ all samples are equal1 parent b61b08d commit 6318dab
2 files changed
+6
-5
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
87 | 87 | | |
88 | 88 | | |
89 | 89 | | |
90 | | - | |
| 90 | + | |
91 | 91 | | |
92 | 92 | | |
93 | 93 | | |
| |||
126 | 126 | | |
127 | 127 | | |
128 | 128 | | |
129 | | - | |
| 129 | + | |
130 | 130 | | |
131 | 131 | | |
132 | 132 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
106 | 106 | | |
107 | 107 | | |
108 | 108 | | |
| 109 | + | |
109 | 110 | | |
110 | 111 | | |
111 | 112 | | |
112 | 113 | | |
113 | | - | |
114 | | - | |
115 | | - | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
116 | 117 | | |
117 | 118 | | |
118 | 119 | | |
| |||
0 commit comments