shithub: hugo

Download patch

ref: 14bce18a6c5aca8cb3e70a74d5045ca8b2358fee
parent: 837e084bbe53e9e2e6cd471d2a3daf273a874d92
author: Cameron Moore <moorereason@gmail.com>
date: Fri Oct 16 09:27:09 EDT 2020

highlight: Avoid making unnecessary allocation

Avoid creating a local copy of the highlight configuration when no
options are passed.

Benchmarks of building the docs site:

name        old time/op    new time/op    delta
DocsSite-2     1.94s ± 4%     1.93s ± 4%    ~     (p=0.841 n=5+5)

name        old alloc/op   new alloc/op   delta
DocsSite-2     666MB ± 1%     656MB ± 0%  -1.48%  (p=0.008 n=5+5)

name        old allocs/op  new allocs/op  delta
DocsSite-2     8.85M ± 0%     8.76M ± 0%  -1.04%  (p=0.029 n=4+4)

--- a/markup/highlight/highlight.go
+++ b/markup/highlight/highlight.go
@@ -37,12 +37,15 @@
 }
 
 func (h Highlighter) Highlight(code, lang, optsStr string) (string, error) {
+	if optsStr == "" {
+		return highlight(code, lang, h.cfg)
+	}
+
 	cfg := h.cfg
-	if optsStr != "" {
-		if err := applyOptionsFromString(optsStr, &cfg); err != nil {
-			return "", err
-		}
+	if err := applyOptionsFromString(optsStr, &cfg); err != nil {
+		return "", err
 	}
+
 	return highlight(code, lang, cfg)
 }