shithub: hugo

Download patch

ref: 455df1075205d5fcda184410575e535e605c8f20
parent: 83759953784367ef3ec16d494890167a2380353b
author: Bjørn Erik Pedersen <[email protected]>
date: Thu Feb 25 16:31:22 EST 2016

Optimize replaceShortcodeTokens

We can of course skip reading the entire byte slice again and again.

This was a slip in the original implementation; functionally the same,
but is slightly faster, esp. for larger data sets with many shortcodes:

```
benchmark                             old ns/op     new ns/op     delta
BenchmarkReplaceShortcodeTokens-4     15505         14753         -4.85%

benchmark                             old allocs     new allocs     delta
BenchmarkReplaceShortcodeTokens-4     1              1              +0.00%

benchmark                             old bytes     new bytes     delta
BenchmarkReplaceShortcodeTokens-4     3072          3072          +0.00%
```

--- a/hugolib/shortcode.go
+++ b/hugolib/shortcode.go
@@ -506,7 +506,7 @@
 
 		// This and other cool slice tricks: https://github.com/golang/go/wiki/SliceTricks
 		source = append(source[:j], append(newVal, source[end:]...)...)
-
+		start = j
 		k = bytes.Index(source[start:], pre)
 
 	}