From 022c4795510306e08a4aba31504ca382d41c7fac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Tue, 13 Jul 2021 11:41:02 +0200 Subject: hugofs: Make FileMeta a struct MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit started out investigating a `concurrent map read write` issue, ending by replacing the map with a struct. This is easier to reason about, and it's more effective: ``` name old time/op new time/op delta SiteNew/Regular_Deep_content_tree-16 71.5ms ± 3% 69.4ms ± 5% ~ (p=0.200 n=4+4) name old alloc/op new alloc/op delta SiteNew/Regular_Deep_content_tree-16 29.7MB ± 0% 27.9MB ± 0% -5.82% (p=0.029 n=4+4) name old allocs/op new allocs/op delta SiteNew/Regular_Deep_content_tree-16 313k ± 0% 303k ± 0% -3.35% (p=0.029 n=4+4) ``` See #8749 --- hugolib/content_map_test.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'hugolib/content_map_test.go') diff --git a/hugolib/content_map_test.go b/hugolib/content_map_test.go index a62380efd..014ef9c7d 100644 --- a/hugolib/content_map_test.go +++ b/hugolib/content_map_test.go @@ -51,9 +51,9 @@ func BenchmarkContentMap(b *testing.B) { meta := fi.Meta() // We have a more elaborate filesystem setup in the // real flow, so simulate this here. - meta["lang"] = lang - meta["path"] = meta.Filename() - meta["classifier"] = files.ClassifyContentFile(fi.Name(), meta.GetOpener()) + meta.Lang = lang + meta.Path = meta.Filename + meta.Classifier = files.ClassifyContentFile(fi.Name(), meta.OpenFunc) }) } @@ -109,10 +109,10 @@ func TestContentMap(t *testing.T) { meta := fi.Meta() // We have a more elaborate filesystem setup in the // real flow, so simulate this here. - meta["lang"] = lang - meta["path"] = meta.Filename() - meta["classifier"] = files.ClassifyContentFile(fi.Name(), meta.GetOpener()) - meta["translationBaseName"] = paths.Filename(fi.Name()) + meta.Lang = lang + meta.Path = meta.Filename + meta.TranslationBaseName = paths.Filename(fi.Name()) + meta.Classifier = files.ClassifyContentFile(fi.Name(), meta.OpenFunc) }) } @@ -127,7 +127,7 @@ func TestContentMap(t *testing.T) { header := writeFile(c, fs, "blog/a/index.md", "page") - c.Assert(header.Meta().Lang(), qt.Equals, "en") + c.Assert(header.Meta().Lang, qt.Equals, "en") resources := []hugofs.FileMetaInfo{ writeFile(c, fs, "blog/a/b/data.json", "data"), -- cgit v1.2.3