Codebase list golang-github-vbauerster-mpb / 0b32545
avoid closure, less allocation Vladimir Bauer 4 years ago
5 changed file(s) with 33 addition(s) and 41 deletion(s). Raw diff Collapse all Expand all
156156 return
157157 }
158158
159 ow := optimisticWriter(w)
160 ow(s.components[iLbound].bytes)
161 defer ow(s.components[iRbound].bytes)
159 mustWrite(w, s.components[iLbound].bytes)
160 defer mustWrite(w, s.components[iRbound].bytes)
162161
163162 if width == 0 {
164163 return
230229 }
231230
232231 if s.rev {
233 flush(ow, padding, filling)
232 flush(w, padding, filling)
234233 } else {
235 flush(ow, filling, padding)
236 }
237 }
238
239 func flush(ow func([]byte), filling, padding [][]byte) {
234 flush(w, filling, padding)
235 }
236 }
237
238 func flush(w io.Writer, filling, padding [][]byte) {
240239 for i := len(filling) - 1; i >= 0; i-- {
241 ow(filling[i])
240 mustWrite(w, filling[i])
242241 }
243242 for i := 0; i < len(padding); i++ {
244 ow(padding[i])
245 }
246 }
247
248 func optimisticWriter(w io.Writer) func([]byte) {
249 return func(p []byte) {
250 _, err := w.Write(p)
251 if err != nil {
252 panic(err)
253 }
254 }
255 }
243 mustWrite(w, padding[i])
244 }
245 }
246
247 func mustWrite(w io.Writer, p []byte) {
248 _, err := w.Write(p)
249 if err != nil {
250 panic(err)
251 }
252 }
11
22 import "io"
33
4 func optimisticStringWriter(w io.Writer) func(string) {
5 return func(s string) {
6 _, err := io.WriteString(w, s)
7 if err != nil {
8 panic(err)
9 }
4 func mustWriteString(w io.Writer, s string) {
5 _, err := io.WriteString(w, s)
6 if err != nil {
7 panic(err)
108 }
119 }
2222 }
2323 }
2424
25 osw := optimisticStringWriter(st)
26 osw(strconv.FormatFloat(float64(s), 'f', prec, 64))
25 mustWriteString(st, strconv.FormatFloat(float64(s), 'f', prec, 64))
2726 if st.Flag(' ') {
28 osw(" ")
27 mustWriteString(st, " ")
2928 }
30 osw("%")
29 mustWriteString(st, "%")
3130 }
3231
3332 // Percentage returns percentage decorator. It's a wrapper of NewPercentage.
4848 unit = _iTiB
4949 }
5050
51 osw := optimisticStringWriter(st)
52 osw(strconv.FormatFloat(float64(self)/float64(unit), 'f', prec, 64))
51 mustWriteString(st, strconv.FormatFloat(float64(self)/float64(unit), 'f', prec, 64))
5352 if st.Flag(' ') {
54 osw(" ")
53 mustWriteString(st, " ")
5554 }
56 osw(unit.String())
55 mustWriteString(st, unit.String())
5756 }
5857
5958 const (
9796 unit = _TB
9897 }
9998
100 osw := optimisticStringWriter(st)
101 osw(strconv.FormatFloat(float64(self)/float64(unit), 'f', prec, 64))
99 mustWriteString(st, strconv.FormatFloat(float64(self)/float64(unit), 'f', prec, 64))
102100 if st.Flag(' ') {
103 osw(" ")
101 mustWriteString(st, " ")
104102 }
105 osw(unit.String())
103 mustWriteString(st, unit.String())
106104 }
2222
2323 func (self *speedFormatter) Format(st fmt.State, verb rune) {
2424 self.Formatter.Format(st, verb)
25 optimisticStringWriter(st)("/s")
25 mustWriteString(st, "/s")
2626 }
2727
2828 // EwmaSpeed exponential-weighted-moving-average based speed decorator.