From 8f60c0c1ec11c3c47ed7e3eff121ba1f1976f755 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Sun, 29 Oct 2023 18:03:36 +0100 Subject: [PATCH] livereloadinject: Save some allocations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As suggested by @DominoPivot ``` name old time/op new time/op delta LiveReloadInject-10 1.11µs ± 2% 1.04µs ± 2% -6.45% (p=0.029 n=4+4) name old alloc/op new alloc/op delta LiveReloadInject-10 1.23kB ± 0% 0.89kB ± 0% -27.69% (p=0.029 n=4+4) name old allocs/op new allocs/op delta LiveReloadInject-10 12.0 ± 0% 10.0 ± 0% -16.67% (p=0.029 n=4+4) ``` --- .../livereloadinject/livereloadinject.go | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/transform/livereloadinject/livereloadinject.go b/transform/livereloadinject/livereloadinject.go index 43c03348d..1e21a92e6 100644 --- a/transform/livereloadinject/livereloadinject.go +++ b/transform/livereloadinject/livereloadinject.go @@ -25,12 +25,14 @@ import ( "github.com/gohugoio/hugo/transform" ) -var ignoredSyntax = regexp.MustCompile(`(?s)^(?:\s+||<\?.*?\?>)*`) -var tagsBeforeHead = []*regexp.Regexp{ - regexp.MustCompile(`(?is)^]*>`), - regexp.MustCompile(`(?is)^]*)?>`), - regexp.MustCompile(`(?is)^]*)?>`), -} +var ( + ignoredSyntax = regexp.MustCompile(`(?s)^(?:\s+||<\?.*?\?>)*`) + tagsBeforeHead = []*regexp.Regexp{ + regexp.MustCompile(`(?is)^]*>`), + regexp.MustCompile(`(?is)^]*)?>`), + regexp.MustCompile(`(?is)^]*)?>`), + } +) // New creates a function that can be used to inject a script tag for // the livereload JavaScript at the start of an HTML document's head. @@ -54,12 +56,12 @@ func New(baseURL url.URL) transform.Transformer { src += "&port=" + baseURL.Port() src += "&path=" + strings.TrimPrefix(path+"/livereload", "/") - c := make([]byte, len(b)) - copy(c, b) - script := []byte(fmt.Sprintf(``, html.EscapeString(src))) - c = append(c[:idx], append(script, c[idx:]...)...) + c := make([]byte, len(b)+len(script)) + copy(c, b[:idx]) + copy(c[idx:], script) + copy(c[idx+len(script):], b[idx:]) if _, err := ft.To().Write(c); err != nil { loggers.Log().Warnf("Failed to inject LiveReload script:", err)