memory allocation optimization

This commit is contained in:
Drew Weymouth
2023-04-20 19:53:08 -07:00
parent 3521f62f28
commit ff1094c588
+23 -23
View File
@@ -76,32 +76,29 @@ func (s *searchTracksIterator) Next() *subsonic.Child {
} }
// prefetch more search results from server // prefetch more search results from server
if s.prefetched == nil { if len(s.prefetched) == 0 {
results := s.searchIterBase.fetchResults() results := s.searchIterBase.fetchResults()
if results == nil {
s.done = true
s.trackIDset = nil
return nil
}
// add results from songs search if results != nil {
s.addNewTracks(results.Song) // add results from songs search
s.songOffset += len(results.Song) s.addNewTracks(results.Song)
s.songOffset += len(results.Song)
// add results from artists search // add results from artists search
for _, artist := range results.Artist { for _, artist := range results.Artist {
artist, err := s.s.GetArtist(artist.ID) artist, err := s.s.GetArtist(artist.ID)
if err != nil { if err != nil {
log.Printf("error fetching artist: %s", err.Error()) log.Printf("error fetching artist: %s", err.Error())
} else { } else {
s.addNewTracksFromAlbums(artist.Album) s.addNewTracksFromAlbums(artist.Album)
}
} }
} s.artistOffset += len(results.Artist)
s.artistOffset += len(results.Artist)
// add results from albums search // add results from albums search
s.addNewTracksFromAlbums(results.Album) s.addNewTracksFromAlbums(results.Album)
s.albumOffset += len(results.Album) s.albumOffset += len(results.Album)
}
} }
// return from prefetched results // return from prefetched results
@@ -109,13 +106,16 @@ func (s *searchTracksIterator) Next() *subsonic.Child {
tr := s.prefetched[s.prefetchedPos] tr := s.prefetched[s.prefetchedPos]
s.prefetchedPos++ s.prefetchedPos++
if s.prefetchedPos == len(s.prefetched) { if s.prefetchedPos == len(s.prefetched) {
s.prefetched = nil s.prefetched = s.prefetched[:0]
s.prefetchedPos = 0 s.prefetchedPos = 0
} }
return tr return tr
} }
// no more results
s.done = true
s.prefetched = nil
s.trackIDset = nil
return nil return nil
} }