tpl: Use xxHash instead of MD5 to hash the deferred templates - hugo - [fork] hugo port for 9front
 (HTM) git clone git@git.drkhsh.at/hugo.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 4d8bfa7f1c21a4b7ece26acdcba3f2e38e54d923
 (DIR) parent f0ed91caba9ab962593479e745a0df1a5518c4bf
 (HTM) Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
       Date:   Wed, 17 Jul 2024 12:51:49 +0200
       
       tpl: Use xxHash instead of MD5 to hash the deferred templates
       
       Motivation is performance. These templates are typically very small, so the win is minor, I guess.
       
       Diffstat:
         M helpers/general.go                  |       9 +++++++++
         M tpl/tplimpl/template_ast_transform… |       2 +-
       
       2 files changed, 10 insertions(+), 1 deletion(-)
       ---
 (DIR) diff --git a/helpers/general.go b/helpers/general.go
       @@ -27,6 +27,7 @@ import (
                "unicode"
                "unicode/utf8"
        
       +        "github.com/cespare/xxhash/v2"
                "github.com/spf13/afero"
        
                "github.com/jdkato/prose/transform"
       @@ -257,6 +258,14 @@ func SliceToLower(s []string) []string {
                return l
        }
        
       +// XxHashString takes a string and returns its xxHash hash.
       +func XxHashString(f string) string {
       +        h := xxhash.New()
       +        h.WriteString(f)
       +        hash := h.Sum(nil)
       +        return hex.EncodeToString(hash)
       +}
       +
        // MD5String takes a string and returns its MD5 hash.
        func MD5String(f string) string {
                h := md5.New()
 (DIR) diff --git a/tpl/tplimpl/template_ast_transformers.go b/tpl/tplimpl/template_ast_transformers.go
       @@ -254,7 +254,7 @@ func (c *templateContext) handleDefer(withNode *parse.WithNode) {
                        c.err = errors.New("resources.PostProcess cannot be used in a deferred template")
                        return
                }
       -        innerHash := helpers.MD5String(s)
       +        innerHash := helpers.XxHashString(s)
                deferredID := tpl.HugoDeferredTemplatePrefix + innerHash
        
                c.deferNodes[deferredID] = inner