From cdcd15b6c2abbb76fd95fbbf90365c56e82f46aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Tue, 11 Jan 2022 17:32:58 +0100 Subject: Only create LazyContentProvider for the non-rendering Site MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Which saves a fair amound of allocations: ``` gobench --package ./hugolib --bench "SiteNew/Regular_D" --base master ``` Before: ``` name old time/op new time/op delta SiteNew/Regular_Deep_content_tree-10 40.7ms ± 3% 41.2ms ± 1% ~ (p=0.343 n=4+4) name old alloc/op new alloc/op delta SiteNew/Regular_Deep_content_tree-10 27.7MB ± 0% 28.8MB ± 0% +3.76% (p=0.029 n=4+4) name old allocs/op new allocs/op delta SiteNew/Regular_Deep_content_tree-10 304k ± 0% 329k ± 0% +8.07% (p=0.029 n=4+4) ``` After: ``` name old time/op new time/op delta SiteNew/Regular_Deep_content_tree-10 34.2ms ± 1% 34.7ms ± 1% ~ (p=0.114 n=4+4) name old alloc/op new alloc/op delta SiteNew/Regular_Deep_content_tree-10 27.7MB ± 0% 28.1MB ± 0% +1.38% (p=0.029 n=4+4) name old allocs/op new allocs/op delta SiteNew/Regular_Deep_content_tree-10 304k ± 0% 314k ± 0% +3.03% (p=0.029 n=4+4) ``` Updates #8919 --- resources/page/page_lazy_contentprovider.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'resources') diff --git a/resources/page/page_lazy_contentprovider.go b/resources/page/page_lazy_contentprovider.go index d8d92d7cd..a513a063a 100644 --- a/resources/page/page_lazy_contentprovider.go +++ b/resources/page/page_lazy_contentprovider.go @@ -49,6 +49,10 @@ func NewLazyContentProvider(f func() (ContentProvider, error)) *LazyContentProvi return &lcp } +func (lcp *LazyContentProvider) Reset() { + lcp.init.Reset() +} + func (lcp *LazyContentProvider) Content() (interface{}, error) { lcp.init.Do() return lcp.cp.Content() @@ -67,35 +71,29 @@ func (lcp *LazyContentProvider) PlainWords() []string { func (lcp *LazyContentProvider) Summary() template.HTML { lcp.init.Do() return lcp.cp.Summary() - } func (lcp *LazyContentProvider) Truncated() bool { lcp.init.Do() return lcp.cp.Truncated() - } func (lcp *LazyContentProvider) FuzzyWordCount() int { lcp.init.Do() return lcp.cp.FuzzyWordCount() - } func (lcp *LazyContentProvider) WordCount() int { lcp.init.Do() return lcp.cp.WordCount() - } func (lcp *LazyContentProvider) ReadingTime() int { lcp.init.Do() return lcp.cp.ReadingTime() - } func (lcp *LazyContentProvider) Len() int { lcp.init.Do() return lcp.cp.Len() - } -- cgit v1.2.3