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 Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
collections tpl/collections: Fix apply with namespaced template funcs 2022-01-17 09:50:48 +01:00
compare Validate comparison operator argument count 2022-02-05 17:41:43 +01:00
crypto Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
data Add some basic security policies with sensible defaults 2021-12-16 09:40:22 +01:00
debug Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
encoding Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
fmt Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
hugo Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
images Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
inflect Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
internal Add resources.GetRemote 2021-12-17 09:33:51 +01:00
js Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
lang Fix description of lang.FormatNumberCustom 2021-11-01 18:54:43 +01:00
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 Add some basic security policies with sensible defaults 2021-12-16 09:40:22 +01:00
partials tpl/partials: Make sure a cached partial is invoked only once 2022-02-17 11:53:24 +01:00
path tpl/path: Add path.Clean 2021-10-05 16:15:10 +02:00
reflect Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
resources tpl/resources: Add empty method mapping for GetRemote 2021-12-17 10:30:10 +01:00
safe Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
site Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
strings Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
templates tpl/templates: Fix templates.Exist issue with base templates 2022-02-09 22:33:07 +01:00
time tpl/time: Use configured location when date passed to Format is string 2021-10-30 16:09:38 +02:00
tplimpl tpl: Remove TODO comment 2022-02-15 23:39:54 +01:00
transform Always use content to resolve content type in resources.GetRemote 2021-12-17 09:50:28 +01:00
urls Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
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 Create lightweight forks of text/template and html/template 2019-12-12 09:59:34 +01:00