mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-23 21:53:09 +02:00
hugofs: Make FileMeta a struct
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
This commit is contained in:
@@ -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"),
|
||||
|
Reference in New Issue
Block a user