resource: Optimize integrity string generation
authorCameron Moore <moorereason@gmail.com>
Tue, 16 Oct 2018 01:52:46 +0000 (20:52 -0500)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 16 Oct 2018 06:33:38 +0000 (08:33 +0200)
Remove use of fmt.Sprintf for simple string concatenation.  A simple
change for a small perf boost.

```
name         old time/op    new time/op    delta
Integrity-4     525ns ± 2%     268ns ± 2%  -48.92%  (p=0.000 n=10+10)

name         old alloc/op   new alloc/op   delta
Integrity-4      144B ± 0%      112B ± 0%  -22.22%  (p=0.000 n=10+10)

name         old allocs/op  new allocs/op  delta
Integrity-4      5.00 ± 0%      3.00 ± 0%  -40.00%  (p=0.000 n=10+10)
```

resource/integrity/integrity.go

index bbb214170c681b069c5c79cf9dcd85b2e66bf917..535c06a32983311cc274eb2833e9967bb3689f01 100644 (file)
@@ -96,7 +96,7 @@ func (c *Client) Fingerprint(res resource.Resource, algo string) (resource.Resou
 
 func integrity(algo string, sum []byte) template.HTMLAttr {
        encoded := base64.StdEncoding.EncodeToString(sum)
-       return template.HTMLAttr(fmt.Sprintf("%s-%s", algo, encoded))
+       return template.HTMLAttr(algo + "-" + encoded)
 }
 
 func digest(h hash.Hash) ([]byte, error) {