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:
Bjørn Erik Pedersen 2021-07-13 11:41:02 +02:00
parent f27e542442
commit 022c479551
No known key found for this signature in database
GPG key ID: 330E6E2BD4859D8F
44 changed files with 434 additions and 451 deletions

View file

@ -80,12 +80,12 @@ func Pack(fs afero.Fs, fis []hugofs.FileMetaInfo) error {
}
meta := fi.(hugofs.FileMetaInfo).Meta()
masterFilename := meta.Filename()
masterFilename := meta.Filename
f, err := meta.Open()
if err != nil {
return errors.Wrap(err, "npm pack: failed to open package file")
}
b = newPackageBuilder(meta.Module(), f)
b = newPackageBuilder(meta.Module, f)
f.Close()
for _, fi := range fis {
@ -100,7 +100,7 @@ func Pack(fs afero.Fs, fis []hugofs.FileMetaInfo) error {
meta := fi.(hugofs.FileMetaInfo).Meta()
if meta.Filename() == masterFilename {
if meta.Filename == masterFilename {
continue
}
@ -108,7 +108,7 @@ func Pack(fs afero.Fs, fis []hugofs.FileMetaInfo) error {
if err != nil {
return errors.Wrap(err, "npm pack: failed to open package file")
}
b.Add(meta.Module(), f)
b.Add(meta.Module, f)
f.Close()
}