MTE legt uit: Hoe de voortgangsbanden werken en waarom ze het grootste deel van de tijd onnauwkeurig zijn
Sinds de eerste GUI in Windows hebben we geleefd met de realiteit van voortgangsbalken. Ze waren altijd als een uitstellende vriend, die je vertelde dat ze bijna klaar waren met iets, terwijl ze in werkelijkheid waarschijnlijk nog lang niet het einde waren. Er is een gevoel van frustratie dat je vult als je "99%" op de voortgangsbalk leest terwijl het je vertelt dat het nog een seconde over is om een taak te voltooien, de laatste vijf minuten. We begrijpen uw frustratie en daarom ga ik precies uitleggen waarom deze dingen gebeuren.
Laten we eerst kijken naar hoe de voortgangsbalken werken
Een voortgangsbalk wordt gemaakt door een dialoogvenster om te slaan en er een balk in te plaatsen. Die balk vult zich volgens het percentage van de voortgang bij het voltooien van een taak, vandaar de naam "voortgangsbalk". Programmeurs laten voortgangsbalkjes aankruisen door bepaalde mijlpalen tijdens een taak toe te wijzen aan een percentage. Dus zodra een voortgangsbalk het derde deel van een taak met 100 delen bereikt, weet deze dat deze zichzelf slechts drie procent moet vullen.
Soms kunnen programmeurs ook een timer op hun voortgangsbalk zetten. Dit zal (altijd onnauwkeurig) bepalen hoeveel tijd een specifieke taak zal duren totdat het klaar is. Laten we met het vorige voorbeeld stellen dat de eerste drie delen van onze 100-delige taak in drie seconden zijn voltooid. Dat blijft een minuut en 37 seconden (97 seconden totaal) over. Maar dit spul functioneert alleen in een perfecte wereld. Ik zal het hieronder uitleggen.
Waarom de bar vastzit
Voortgangsbalken zijn berucht omdat ze op bepaalde punten vastzitten. Het is erg frustrerend, maar er is een reden achter alle waanzin. Wanneer een voortgangsbalk de voortgang van een taak meet, gebruikt deze bepaalde criteria. Laten we bijvoorbeeld zeggen dat we 1000 bestanden kopiëren. Elk van die bestanden heeft waarschijnlijk een andere grootte. Sommige mensen zouden 1000 bij 100 delen. Het klinkt leuk, maar houdt geen rekening met verschillen in bestandsgrootte. Sommige bestanden kunnen een paar MB groot zijn, terwijl andere tot 10 GB kunnen zijn!
Je kunt ook de totale grootte van alle bestanden delen door 100. Het klinkt praktisch en nauwkeuriger, maar het is nog steeds een blindganger. De methode houdt geen rekening met de snelheidsfluctuaties die een harde schijf ondervindt bij het kopiëren van verschillende soorten bestanden of bij het kopiëren van bestanden tijdens andere korte taken. Uiteindelijk krijg je een balk die je laat zien hoe ver je bent gegaan, maar niet hoeveel je kunt verwachten om te wachten totdat de taak is voltooid.
Harde schijven hebben de neiging om kleinere bestanden (of grotere, maar fysiek gefragmenteerde, bestanden) langzamer te kopiëren dan grotere hoeveelheden gegevens te kopiëren. Dat komt omdat het zoeken naar nieuwe segmenten binnen zijn fysieke plattegronden vervelend is bij het openen van 100 kleine bestanden in vergelijking met het proces van het opsporen van twee enorme stukken van een groter bestand. Hetzelfde zou kunnen worden gezegd over registervermeldingen. Ze variëren in lengte en verfijning.
Enkele definitieve gedachten
Vrijwel alles op uw computer heeft zoveel variabelen eraan, dat het onmogelijk is om nauwkeurig de voortgang van een taak te bepalen. Je blijft zitten met een nutteloze balk op je scherm die er gewoon is om te voorkomen dat je een aanval gooit. Het gevecht is voorbij. Je eigenwijze computer zal altijd elke poging om nauwkeurig iets te voorspellen dat in een vacuüm anders op een tijdige manier zou zijn voltooid, altijd winnen. Je kunt echt niets doen aan je voortgangsbalkjes, maar je weet tenminste waarom ze zo frustrerend handelen!
Oh, en hier is een interessant klein spel gerelateerd aan voortgangsbalken: Progress Wars.
Als je kunt bedenken hoe je taken nauwkeuriger kunt voorspellen, laat dan hieronder een reactie achter!
Donkere laad- of voortgangsbalk van BigStockPhoto