mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
Use pooled buffer in replaceShortcodes
Even as a copy at the end is needed, this consumes way less memory on Go 1.4.2: ```benchmark old ns/op new ns/op delta BenchmarkParsePage 145979 139964 -4.12% BenchmarkReplaceShortcodeTokens 633574 631946 -0.26% BenchmarkShortcodeLexer 195842 187938 -4.04% benchmark old allocs new allocs delta BenchmarkParsePage 87 87 +0.00% BenchmarkReplaceShortcodeTokens 9424 9415 -0.10% BenchmarkShortcodeLexer 274 274 +0.00% benchmark old bytes new bytes delta BenchmarkParsePage 141830 141830 +0.00% BenchmarkReplaceShortcodeTokens 35219 25385 -27.92% BenchmarkShortcodeLexer 30178 30177 -0.00% ``` See #1148
This commit is contained in:
parent
67209dbfb3
commit
e764a6e638
1 changed files with 7 additions and 2 deletions
|
@ -458,7 +458,8 @@ func replaceShortcodeTokens(source []byte, prefix string, replacements map[strin
|
||||||
return source, nil
|
return source, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var buff bytes.Buffer
|
buff := bp.GetBuffer()
|
||||||
|
defer bp.PutBuffer(buff)
|
||||||
|
|
||||||
sourceLen := len(source)
|
sourceLen := len(source)
|
||||||
start := 0
|
start := 0
|
||||||
|
@ -507,7 +508,11 @@ func replaceShortcodeTokens(source []byte, prefix string, replacements map[strin
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.New("buff write failed")
|
return nil, errors.New("buff write failed")
|
||||||
}
|
}
|
||||||
return buff.Bytes(), nil
|
|
||||||
|
bc := make([]byte, buff.Len(), buff.Len())
|
||||||
|
copy(bc, buff.Bytes())
|
||||||
|
|
||||||
|
return bc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getShortcodeTemplate(name string, t tpl.Template) *template.Template {
|
func getShortcodeTemplate(name string, t tpl.Template) *template.Template {
|
||||||
|
|
Loading…
Reference in a new issue