refactor: reduce GC pressure by pre-allocating slices
Signed-off-by: Deluan <deluan@navidrome.org>
This commit is contained in:
+13
-15
@@ -108,11 +108,9 @@ type MediaFiles []MediaFile
|
||||
|
||||
// Dirs returns a deduped list of all directories from the MediaFiles' paths
|
||||
func (mfs MediaFiles) Dirs() []string {
|
||||
var dirs []string
|
||||
for _, mf := range mfs {
|
||||
dir, _ := filepath.Split(mf.Path)
|
||||
dirs = append(dirs, filepath.Clean(dir))
|
||||
}
|
||||
dirs := slice.Map(mfs, func(m MediaFile) string {
|
||||
return filepath.Dir(m.Path)
|
||||
})
|
||||
slices.Sort(dirs)
|
||||
return slices.Compact(dirs)
|
||||
}
|
||||
@@ -121,16 +119,16 @@ func (mfs MediaFiles) Dirs() []string {
|
||||
// It assumes all mediafiles have the same Album, or else results are unpredictable.
|
||||
func (mfs MediaFiles) ToAlbum() Album {
|
||||
a := Album{SongCount: len(mfs)}
|
||||
var fullText []string
|
||||
var albumArtistIds []string
|
||||
var songArtistIds []string
|
||||
var mbzAlbumIds []string
|
||||
var comments []string
|
||||
var years []int
|
||||
var dates []string
|
||||
var originalYears []int
|
||||
var originalDates []string
|
||||
var releaseDates []string
|
||||
fullText := make([]string, 0, len(mfs))
|
||||
albumArtistIds := make([]string, 0, len(mfs))
|
||||
songArtistIds := make([]string, 0, len(mfs))
|
||||
mbzAlbumIds := make([]string, 0, len(mfs))
|
||||
comments := make([]string, 0, len(mfs))
|
||||
years := make([]int, 0, len(mfs))
|
||||
dates := make([]string, 0, len(mfs))
|
||||
originalYears := make([]int, 0, len(mfs))
|
||||
originalDates := make([]string, 0, len(mfs))
|
||||
releaseDates := make([]string, 0, len(mfs))
|
||||
for _, m := range mfs {
|
||||
// We assume these attributes are all the same for all songs on an album
|
||||
a.ID = m.AlbumID
|
||||
|
||||
Reference in New Issue
Block a user