mirror of
https://github.com/gohugoio/hugo.git
synced 2025-04-27 06:00:25 +03: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:
parent
f27e542442
commit
022c479551
44 changed files with 434 additions and 451 deletions
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue