Още от първия графичен интерфейс в Windows, ние живеем с реалността на баровете за напредък. Винаги бяха като отлагащи приятели, които ви казваха, че почти са приключили с нещо, когато в действителност те вероятно са далеч от края. Има чувство на неудовлетвореност, което ви запълва, докато четете "99%" в лентата за напредъка, докато ви казва, че има оставена една секунда, за да завърши задачата през последните пет минути. Ние разбираме вашата неудовлетвореност, затова ще обясня точно защо се случват тези неща.

Първо, нека да видим как работят бариерите за напредък

Лентата за прогрес се прави чрез удряне в диалогов прозорец и поставяне на лента в него. Тази лента се запълва според процента на напредъка, постигнат при изпълнение на задачата, оттук и името "progress bar". Програмистите правят прогресивни ленти, като приписват определени етапи по време на дадена задача до определен процент. Така че, след като лентата за напредъка достигне третата част от задача, съдържаща 100 части, тя знае, че трябва да се напълни само с три процента.

Понякога програмистите могат да поставят и таймер на лентата си за прогрес. Това ще (винаги неточно) определи колко време ще отнеме определена задача, докато не приключи. Използвайки предишния пример, да кажем, че първите три части на задачата ни от 100 части бяха извършени след три секунди. Остава една минута и 37 секунди (общо 97 секунди). Но тези неща функционират само в перфектен свят. Ще обясня по-долу.

Защо бараката е увиснала

Линиите за напредък са известни с това, че се забиват в определени точки. Това е ужасно разочароващо, но има причина зад цялата лудост. Когато лентата за напредък измерва напредъка на дадена задача, тя използва определени критерии. Да приемем например, че копираме 1000 файла. Всеки от тези файлове вероятно има различен размер. Някои хора ще разделят 1000 на 100. Това звучи добре, но не отчита разлики в размера на файла. Някои файлове могат да бъдат няколко MB, докато други могат да бъдат до 10 GB!

Можете също така да разделите общия размер на всички файлове на 100. Това звучи практично и по-точно, но все още е боклук. Методът не отчита колебанията в скоростта, които изпитват твърдия диск, когато копирате различни типове файлове или копирате файлове, докато изпълнявате други кратки задачи. В крайна сметка завършва с бар, който просто ви показва колко далече сте отишли, но не колко можете да очаквате да чакате задачата да завърши.

Твърдите дискове са склонни да копират по-малки файлове (или по-големи, но физически фрагментирани файлове), отколкото копират по-големи парчета данни. Това е така, защото процесът на търсене на нови сегменти в рамките на своите физически плочи е по-труден за достъп до 100 малки файла в сравнение с процеса на лов на две огромни парчета от по-голям файл. Същото може да се каже и за записите в системния регистър. Те се различават по дължина и изтънченост.

Някои финални мисли

На практика всичко на вашия компютър има толкова много променливи, свързани с него, че е невъзможно да се определи точно напредъка на дадена задача. Вие сте оставени с един безполезен бар на екрана, който е точно там, за да ви предпази от хвърляне на годни. Борбата свърши. Твърдият ви компютър винаги ще спечели всеки опит да се предскаже точно нещо, което във вакуум би било иначе завършено своевременно. Наистина не можеш да направиш нищо за баража си, но поне знаеш защо действат по такъв разочароващ начин!

О, и ето една интересна малка игра, свързана с бара за прогрес: Прогрес войни.

Ако можете да помислите за по-точни начини за прогнозиране на задачите, не забравяйте да оставите коментар по-долу!

Тъмно зареждане или лента за прогрес от BigStockPhoto