MTE forklarer: hvordan fremgangsstenger virker og hvorfor de er unøyaktige mesteparten av tiden
Helt siden den første GUI i Windows har vi levd med virkeligheten av fremdriftslinjene. De var alltid som en fortløpende venn, og forteller deg at de nesten er ferdig med noe når de i realiteten er langt fra slutten. Det er en følelse av frustrasjon som fyller deg når du leser "99%" på fremdriftslinjen mens det forteller deg at det har ett sekund igjen for å fullføre en oppgave, de siste fem minuttene. Vi forstår din frustrasjon, og derfor kommer jeg til å forklare nøyaktig hvorfor disse tingene skje.
Først, la oss se på hvordan fremdriftstangene virker
En fremdriftslinje er laget ved å slappe på en dialog og sette en bar i den. Den baren fyller seg i henhold til prosentsatsen for fremdrift som er gjort i å utføre en oppgave, derav navnet "fremdriftslinje." Programmerer gjør fremdriftslinjene kryss ved å tilordne bestemte milepæler under en oppgave til en prosentandel. Så når en fremdriftsfelt når den tredje delen av en oppgave som inneholder 100 deler, vet man at den bare må fylle seg med tre prosent.
Noen ganger kan programmerere også sette en timer på deres fremdriftsfelt. Dette vil (alltid unøyaktig) bestemme hvor mye tid en bestemt oppgave vil ta til den er ferdig. Bruk det forrige eksempelet, la oss si at de første tre delene av vår 100-del oppgave var ferdig om tre sekunder. Det går et minutt og 37 sekunder (totalt 97 sekunder). Men disse tingene fungerer bare i en perfekt verden. Jeg skal forklare nedenfor.
Hvorfor Baren er fast
Progress barer er beryktet for å bli sittende fast på visse punkter. Det er veldig frustrerende, men det er en grunn bak all galskap. Når en fremdriftslinje måler fremdriften av en oppgave, bruker den visse kriterier. For eksempel, la oss si at vi kopierer 1000 filer. Hver av disse filene har sannsynligvis en annen størrelse. Noen mennesker vil dele 1000 med 100. Det høres fint ut, men tar ikke hensyn til forskjeller i filstørrelse. Noen filer kan være et par MB, mens andre kan være opptil 10 GB!
Du kan også dele den totale størrelsen på alle filene med 100. Det høres praktisk og mer nøyaktig, men det er fortsatt en dud. Metoden tar ikke hensyn til hastighetsfluktuasjonene som en harddisk opplever når du kopierer forskjellige typer filer, eller når du kopierer filer mens du utfører andre korte oppgaver. Til slutt ender du med en bar som bare viser deg hvor langt du har gått, men ikke hvor mye du kan forvente å vente på oppgaven å fullføre.
Harddisker har en tendens til å kopiere mindre filer (eller større, men fysisk fragmenterte filer) langsommere enn det kopierer større biter av data. Det er fordi prosessen med å søke nye segmenter i sine fysiske tallerkener er mer kjedelig når man får tilgang til 100 små filer sammenlignet med prosessen med å jakte på to store biter av en større fil. Det samme kan sies om registeroppføringer. De varierer i lengde og raffinement.
Noen siste tanker
Nesten alt på datamaskinen har så mange variabler knyttet til det, at det er umulig å nøyaktig bestemme fremdriften av en oppgave. Du er igjen med en ubrukelig bar på skjermen som bare er der for å hindre deg i å kaste en passform. Kampen er over. Din stædige datamaskin vil alltid vinne over ethvert forsøk på å nøyaktig forutsi noe som i et vakuum ellers ville ha fullført i tide. Du kan virkelig ikke gjøre noe med dine fremdriftsfelt, men du vet i hvert fall hvorfor de opptrer på så frustrerende måter!
Åh, og her er et interessant lite spill relatert til fremdriftsstenger: Progress Wars.
Hvis du kan tenke på mer nøyaktige måter å forutsi oppgaver, sørg for å legge igjen en kommentar nedenfor!
Mørk lasting eller fremdriftslinje av BigStockPhoto