Hervatten wacht niet meer op de tags #59
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "hervatten-wacht-niet-op-tags"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #58
Het lag niet aan de lijst maar aan wat erachteraan kwam.
De tags — speelduur, jaar en commentaar — staan niet in de database, dus de server beantwoordt
/tagsdoor elk bestand van de lijst te openen. Dat is een kost per regel, waar de lijst zelf één query is.ResumeAsyncwachtteLoadTracksAsyncin zijn geheel af voordat er iets klonk.Gemeten tegen de live bibliotheek, alleen lezend:
collections/3/tracks(2000 regels)collections/3/tags(2000 bestanden)volumes/9/tags(100 bestanden)Vandaar precies wat je beschrijft: een halve minuut stilte in de Top 2000, en meteen geluid in de andere. In een albumcollectie gaat het om de tien bestanden van één plaat, dus daar viel het al helemaal niet op.
Wat er verandert
LoadTracksAsynclaat de tags los in plaats van erop te wachten (FillDetailsAsync), bewaakt door dezelfde generatieteller die er al stond voor het doorklikken. Er wacht niets op: de regels staan al op het scherm en de tijden vullen zichzelf in als ze binnenkomen. De covers van de rasterweergave gaan mee, om dezelfde reden.Omdat de aanroep nu losgelaten wordt, worden zijn uitzonderingen daar gevangen en gelogd; ze halen de statusregel niet meer. De lijst staat er en is bruikbaar, en dat alleen de speelduur ontbreekt is iets voor het log en niet voor de ene regel die het venster heeft.
Nagemeten
Wegwerp-PostgreSQL, lokale server, een platte collectie van duizend bestanden, en de speler die zichzelf hervat — gemeten van procesbegin tot MPRIS
Playingmeldt, drie keer elk:Dat is de beste-gevalversie: die duizend bestanden zijn hardlinks van zes stuks in een warme cache, dus de tags-aanroep kostte daar maar 1,1 s. Op de echte Top 2000 gaat het om de 33,6 s hierboven.