MTE Forklarer: Hvordan Progress Bars arbejder og hvorfor de er unøjagtige mest af tiden
Lige siden den første GUI i Windows har vi levet med virkeligheden af progress bar. De var altid som en fortabende ven, der fortæller dig, at de næsten er færdige med noget, når de i virkeligheden sandsynligvis er langt fra slutningen. Der er en følelse af frustration, der fylder dig, når du læser "99%" på statuslinjen, mens det fortæller dig, at det har et sekund tilbage for at afslutte en opgave i de sidste fem minutter. Vi forstår din frustration, og derfor vil jeg forklare, hvorfor disse ting sker.
Først skal vi se på, hvordan fremskridtstænger virker
En fremdriftslinje er lavet ved at slå på en dialog og sætte en bar i den. Den bar fylder op i henhold til den procentdel af fremskridt, der er gjort i udførelsen af en opgave, deraf navnet "progress bar". Programmører gør fremdriftslinjer tærsket ved at tildele bestemte milepæle under en opgave til en procentdel. Så når en fremdriftslinje når den tredje del af en opgave med 100 dele, ved den, at den kun skal udfylde sig kun tre procent.
Nogle gange kan programmører også sætte en timer på deres fremdriftslinier. Dette vil (altid unøjagtigt) bestemme, hvor meget tid en bestemt opgave skal tage, indtil den er færdig. Brug det foregående eksempel, lad os sige, at de første tre dele af vores 100-delt opgave blev udført om tre sekunder. Det efterlader et minut og 37 sekunder (97 sekunder i alt). Men disse ting fungerer kun i en perfekt verden. Jeg vil forklare nedenfor.
Hvorfor Baren er fast
Progress bars er berygtede for at blive fast på visse punkter. Det er frygteligt frustrerende, men der er en grund til alt galskab. Når en fremdriftslinje måler fremskridtene i en opgave, bruger den visse kriterier. Lad os f.eks. Sige, at vi kopierer 1.000 filer. Hver af disse filer har formentlig en anden størrelse. Nogle mennesker vil dele 1000 med 100. Det lyder godt, men tager ikke højde for forskelle i filstørrelse. Nogle filer kan være et par MB, mens andre kan være op til 10 GB!
Du kan også dele den samlede størrelse af alle filerne med 100. Det lyder praktisk og mere præcist, men det er stadig en dud. Metoden tager ikke højde for de hastighedsudsving, som en harddisk oplever, når man kopierer forskellige typer filer, eller når man kopierer filer, mens andre korte opgaver udføres. I sidste ende slutter du med en bar, der kun viser dig hvor langt du er gået, men ikke hvor meget du kan forvente at vente på opgaven at afslutte.
Harddiske har tendens til at kopiere mindre filer (eller større, men fysisk fragmenterede filer) langsommere end det kopierer større klumper af data. Det skyldes, at processen med at finde nye segmenter inden for sine fysiske plader er mere kedelig, når man får adgang til 100 små filer sammenlignet med processen med at jage ned to store klumper af en større fil. Det samme kan siges om registreringsposter. De varierer i længden og raffinement.
Nogle endelige tanker
Næsten alt på din computer har så mange variabler knyttet til det, at det er umuligt at præcis bestemme en opgaves fremskridt. Du er tilbage med en ubrugelig bar på skærmen, der bare er der for at holde dig fra at smide. Kampen er forbi. Din stædige computer vil altid vinde over ethvert forsøg på at nøjagtigt forudsige noget, som i et vakuum ellers ville have afsluttet rettidigt. Du kan virkelig ikke gøre noget ved dine fremgangsstænger, men i hvert fald ved du, hvorfor de virker på så frustrerende måder!
Åh, og her er et interessant lille spil relateret til progress barer: Progress Wars.
Hvis du kan tænke på mere præcise måder at forudsige opgaver på, skal du sørge for at skrive en kommentar nedenfor!
Dark loading eller progress bar ved BigStockPhoto