hugo/tpl
Bjørn Erik Pedersen 0927cf739f tpl/partials: Make sure a cached partial is invoked only once
This commit revises the locking strategy for `partialCached`. We have added a benchmark that may be a little artificial, but it should at least show that we're not losing any performance over this:

```bash
name              old time/op    new time/op    delta
IncludeCached-10    12.2ms ± 2%    11.3ms ± 1%   -7.36%  (p=0.029 n=4+4)

name              old alloc/op   new alloc/op   delta
IncludeCached-10    7.17MB ± 0%    5.09MB ± 0%  -29.00%  (p=0.029 n=4+4)

name              old allocs/op  new allocs/op  delta
IncludeCached-10      128k ± 1%       70k ± 0%  -45.42%  (p=0.029 n=4+4)
```

This commit also revises the template metrics hints logic a little, and add a test for it, which output is currently this:

```bash
 cumulative       average       maximum      cache  percent  cached  total
       duration      duration      duration  potential   cached   count  count  template
     ----------      --------      --------  ---------  -------  ------  -----  --------
      163.334µs     163.334µs     163.334µs          0        0       0      1  index.html
       23.749µs       5.937µs      19.916µs         25       50       2      4  partials/dynamic1.html
        9.625µs       4.812µs        6.75µs        100       50       1      2  partials/static1.html
        7.625µs       7.625µs       7.625µs        100        0       0      1  partials/static2.html
```

Some notes:

* The duration now includes the cached invocations (which should be very short)
* A cached template gets executed once before it gets cached, so the "percent cached" will never be 100.

Fixes #4086
Fixes #9506
2022-02-17 11:53:24 +01:00
..
cast
collections
compare Validate comparison operator argument count 2022-02-05 17:41:43 +01:00
crypto
data
debug
encoding
fmt
hugo
images
inflect
internal
js
lang
math tpl/partials: Make sure a cached partial is invoked only once 2022-02-17 11:53:24 +01:00
openapi/openapi3 Simplify some integration tests 2022-02-10 20:43:19 +01:00
os
partials tpl/partials: Make sure a cached partial is invoked only once 2022-02-17 11:53:24 +01:00
path
reflect
resources
safe
site
strings
templates tpl/templates: Fix templates.Exist issue with base templates 2022-02-09 22:33:07 +01:00
time
tplimpl tpl: Remove TODO comment 2022-02-15 23:39:54 +01:00
transform
urls
template.go Add --printUnusedTemplates 2022-02-15 20:01:57 +01:00
template_info.go Add --printUnusedTemplates 2022-02-15 20:01:57 +01:00
template_test.go