MTE förklarar: hur framstegsstänger fungerar och varför de är felaktiga mest av tiden
Ända sedan den första GUI i Windows har vi levt med verkligheten av framstegsfält. De var alltid som en förhalande vän och berättade att de nästan är färdiga med någonting när de i verkligheten förmodligen är långt ifrån slutet. Det finns en känsla av frustration som fyller upp dig när du läser "99%" på framdriftsfältet medan det säger att det har en sekund kvar för att avsluta en uppgift, under de senaste fem minuterna. Vi förstår din frustration, varför jag kommer att förklara exakt varför dessa saker händer.
Låt oss först titta på hur framstegsstänger fungerar
En progressiv bar skapas genom att slappna på en dialogruta och sätta en stapel i den. Den fältet fyller sig i procent av hur mycket framsteg som gjorts vid utförandet av en uppgift, följaktligen namnet "Progress Bar". Programmerare gör framstegsfält fäst genom att tilldela vissa milstolpar under en uppgift till en procentandel. Så, när en framdriftsfält når den tredje delen av en uppgift som innehåller 100 delar, vet den att den bara måste fylla sig i tre procent.
Ibland kan programmerare också sätta en timer på sina framsteg. Detta kommer (alltid felaktigt) att bestämma hur mycket tid en specifik uppgift kommer att ta tills den slutar. Med hjälp av det tidigare exemplet, låt oss säga att de tre första delarna av vår 100-deliga uppgift gjordes om tre sekunder. Det lämnar en minut och 37 sekunder (97 sekunder totalt) kvar. Men dessa saker fungerar bara i en perfekt värld. Jag ska förklara nedan.
Varför Baren sitter fast
Progress barer är ökända för att fastna vid vissa punkter. Det är väldigt frustrerande, men det finns en anledning till all galning. När en statusfält mäter uppgiften för en uppgift använder den vissa kriterier. Låt oss till exempel säga att vi kopierar 1000 filer. Var och en av dessa filer har förmodligen en annan storlek. Vissa människor skulle dela 1000 med 100. Det låter bra, men tar inte hänsyn till skillnader i filstorlek. Vissa filer kan vara ett par MB, medan andra kan vara upp till 10 GB!
Du kan också dela upp den totala storleken på alla filerna med 100. Det låter praktiskt och mer exakt, men det är fortfarande en dud. Metoden tar inte hänsyn till de hastighetsfluktuationer som en hårddisk upplever vid kopiering av olika typer av filer, eller när du kopierar filer medan du utför andra korta uppgifter. Till slut hamnar du med en stapel som bara visar hur långt du har gått, men inte hur mycket man kan förvänta sig att vänta på att uppgiften ska slutföras.
Hårddiskar tenderar att kopiera mindre filer (eller större, men fysiskt fragmenterade filer) långsammare än det kopierar större bitar av data. Det beror på att processen med att söka nya segment inom sina fysiska skivor är mer tråkig när man får tillgång till 100 småfiler jämfört med processen att jaga två stora bitar av en större fil. Detsamma kan sägas om registerposter. De varierar i längd och sofistikering.
Några slutliga tankar
Nästan allt på din dator har så många variabler kopplade till det, att det är omöjligt att exakt bestämma hur en uppgift går framåt. Du är kvar med en meningslös bar på din skärm som bara finns för att hålla dig från att kasta en passform. Kampen är över. Din envis dator kommer alltid att vinna över ett försök att exakt förutse något som i ett vakuum annars skulle ha genomfört i tid. Du kan verkligen inte göra något om dina framsteg, men du vet åtminstone varför de agerar på så frustrerande sätt!
Åh, och här är ett intressant litet spel relaterat till progressbalkar: Progress Wars.
Om du kan tänka på mer exakta sätt att förutse uppgifter, var noga med att lämna en kommentar nedan!
Mörkladdning eller framstegsbar av BigStockPhoto