diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2021-07-13 11:41:02 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2021-07-15 17:14:26 +0200 |
commit | 022c4795510306e08a4aba31504ca382d41c7fac (patch) | |
tree | d4c29f62038d0f336d90f32f46bc5b4f5c3ddc28 /create/content.go | |
parent | f27e542442d19436f1428cc22bb03aca398d37a7 (diff) |
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
Diffstat (limited to 'create/content.go')
-rw-r--r-- | create/content.go | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/create/content.go b/create/content.go index 797ffe758..ea065423e 100644 --- a/create/content.go +++ b/create/content.go @@ -123,7 +123,7 @@ func NewContent( func targetSite(sites *hugolib.HugoSites, fi hugofs.FileMetaInfo) *hugolib.Site { for _, s := range sites.Sites { - if fi.Meta().Lang() == s.Language().Lang { + if fi.Meta().Lang == s.Language().Lang { return s } } @@ -137,7 +137,7 @@ func newContentFromDir( cm archetypeMap, name, targetPath string) error { for _, f := range cm.otherFiles { meta := f.Meta() - filename := meta.Path() + filename := meta.Path // Just copy the file to destination. in, err := meta.Open() if err != nil { @@ -166,7 +166,7 @@ func newContentFromDir( } for _, f := range cm.contentFiles { - filename := f.Meta().Path() + filename := f.Meta().Path s := targetSite(sites, f) targetFilename := filepath.Join(targetPath, strings.TrimPrefix(filename, archetypeDir)) @@ -274,7 +274,7 @@ func resolveContentPath(sites *hugolib.HugoSites, fs afero.Fs, targetPath string for _, dir := range sites.BaseFs.Content.Dirs { meta := dir.Meta() - contentDir := meta.Filename() + contentDir := meta.Filename if !strings.HasSuffix(contentDir, helpers.FilePathSeparator) { contentDir += helpers.FilePathSeparator @@ -282,7 +282,7 @@ func resolveContentPath(sites *hugolib.HugoSites, fs afero.Fs, targetPath string if strings.HasPrefix(targetPath, contentDir) { siteContentDir = contentDir - dirLang = meta.Lang() + dirLang = meta.Lang break } } @@ -317,8 +317,8 @@ func resolveContentPath(sites *hugolib.HugoSites, fs afero.Fs, targetPath string } else { var contentDir string for _, dir := range sites.BaseFs.Content.Dirs { - contentDir = dir.Meta().Filename() - if dir.Meta().Lang() == s.Lang() { + contentDir = dir.Meta().Filename + if dir.Meta().Lang == s.Lang() { break } } |