Iš pirmo žvilgsnio atrodytų, kad tikslus laiko apskaičiavimas turėtų būti gana lengvas. Galų gale, pažangų juostos generavimo algoritmas supranta visas užduotis, kurias reikia atlikti anksčiau laiko ... tiesa?
Iš esmės tiesa, kad šaltinio algoritmas žino, ką reikia padaryti prieš laiką. Tačiau kiekvieno žingsnio atlikimo laikas yra labai sudėtinga, jei beveik neįmanoma.
Paprasčiausias pažangos juostos įgyvendinimo būdas - naudoti grafinį užduočių skaitiklio pateikimas. Jei procentas yra visiškai apskaičiuojamas kaip Užbaigtos užduotys / bendras uždavinių skaičius . Nors tai daro logišką požiūrį į pirmąją mintis, svarbu prisiminti, kad (akivaizdžiai) kai kurių užduočių atlikimas užtrunka ilgiau.
Apsvarstykite šias montuotojo atliktas užduotis:
Šiame pavyzdyje 1, 3 ir 4 žingsniai baigsis labai greitai, o 2 veiksmas užtruks šiek tiek laiko. Taigi pažangos juosta, veikianti paprastame skaičiavime, greitai peršokia iki 25%, šiek tiek sumažėja, o 2 žingsnis veikia, o tada beveik iškart peršokia iki 100%.
Šis įgyvendinimo būdas iš tikrųjų yra gana dažnas tarp pažangos juostų. nes, kaip minėta pirmiau, ją lengva įgyvendinti. Tačiau, kaip matote, dėl neproporcingų užduočių kyla faktinis pažangos procentas, nes jis susijęs su likusiu laiko momentu.
Tam, kad išspręstumėte tai, kai kuriuose pažangos juostose gali būti naudojami įdiegimai, kuriuose yra svarsčių. Apsvarstykite pirmiau pateiktus veiksmus, kur kiekvienam žingsniui priskiriamas santykinis svoris:
Naudodamiesi šiuo metodu, pažangų juosta su 10% žingsniais (kaip bendras svoris yra 10) judėtų 1, 3 ir 4 žingsniais, perkeliančius juostelę 10% baigus darbą, o 2 žingsnis ją perkelia 70%. Nors tikrai nėra tobulas, tokie metodai yra paprastas būdas pridėti šiek tiek daugiau tikslumo į progreso juostos procentą.
Apsvarstykite paprastą mano pavyzdį, kuriame prašoma suskaičiuoti iki 50 Aš naudoju chronometrą. Tarkime, kad skaičiuojate iki 25 po 10 sekundžių. Būtų pagrįsta manyti, kad likusius skaičius bus skaičiuojamos dar 10 sekundžių, taigi pažangos juostos sekimas tai parodys 50%, o likusius 10 sekundes. Kai jūsų skaičius bus 25, pradėsiu mesti teniso kamuoliukus į tave. Tikriausiai tai sutrikdys jūsų ritmą, nes jūsų koncentracija pereis nuo griežto skaičiavimo skaičiaus iki vengiančių kamuoliukų, išmestų jūsų kelią. Darant prielaidą, kad galite tęsti skaičiavimą, jūsų tempas beveik sulėtėjo. Taigi dabar pažangos juosta vis dar juda, tačiau daug lėčiau nei prognozuojamas laikas, likęs neveikliai arba faktiškai aukštėjant aukščiau.
Norėdami gauti daugiau praktinio pavyzdžio, apsvarstykite failo atsisiuntimą. Šiuo metu atsisiųsite 100 MB failą 1 MB / s greičiu. Tai labai lengva nustatyti apskaičiuotą užbaigimo laiką. Tačiau 75% ten esama, kai kurie tinklo perkrovos paspaudimai ir jūsų atsisiuntimo greitis nukrenta iki 500 KB / s.
Priklausomai nuo to, kaip naršyklė apskaičiuoja likusį laiką, jūsų ETA gali iš karto pereiti nuo 25 sekundžių iki 50 sekundžių (naudojant dabar tik valstybės:
Likęs dydis / Atsisiuntimo greitis ) arba, greičiausiai, naršyklėje naudojamas sukimojojo vidurkio algoritmas, kuris prisiderintų prie perdavimo greičio svyravimų, nerodant didelių šuolių į naudotoją. persiuntimo algoritmas, susijęs su failo parsisiuntimu, gali veikti šiek tiek panašiai:
Perdavimo greitis per pastaruosius 60 sekundžių prisimenamas naujausia verte, pakeičiančia seniausią (pvz., 61 vertė pakeičia pirmąją).
Po 75 sekundžių į atsisiuntimą, mūsų 60 atmintų reikšmių kiekvienas būtų 1,000 KB. Veiksminga perdavimo sparta yra 1 000 KB (60 000 KB / 60), o tai reiškia, kad liko 25 sekundžių (25 000 KB / 1000 KB).
Jūs negalite tiksliai nustatyti kažko, kas nėra nestandariškas
Galų gale, pažangos juostos netikslumas susilygina su tuo, kad jis bando nustatyti kažkas, kas yra nondeterminis. Kadangi kompiuteriai apdoroja užduotys tiek pagal pareikalavimą, tiek į foną, beveik neįmanoma žinoti, kokie sistemos ištekliai bus prieinami bet kuriuo metu ateityje - tai yra sistemos išteklių prieinamumas, kuris reikalingas norint atlikti bet kurią užduotį.
Kaip galbūt realesnis atvejis kasdieniniam vartotojui - apsvarstykite "Windows Update" arba virusų nuskaitymą. Abi šios operacijos atlieka intensyvias operacijas fone. Dėl to kiekvienos iš jų padaryta pažanga priklauso nuo to, ką vartotojas tuo metu daro. Jei skaitysite el. Laišką, kol tai bus vykdomas, greičiausiai sistemos išteklių paklausa bus maža, o pažangos juosta bus nuosekliai perkelta. Kita vertus, jei atliksite grafikos redagavimą, tada jūsų sistemos išteklių poreikis bus daug didesnis, todėl pažangos juostos judėjimas bus šizofreniškas. Apskritai paprasta, kad nėra kristalų kamuoliuko. Net pati sistema nežino, kokia apkrova ateityje bus bet kokioje ateityje.
Galų gale, tai iš tiesų nėra svarbu
Pažangos juostos tikslas yra gerai parodyti, kad pažanga iš tikrųjų daroma ir atitinkamas procesas nėra pakabintas. Tai malonu, kai pažangos rodiklis yra tikslus, tačiau paprastai tai yra tik nedidelis erzina, kai to nėra. Didžioji dalis kūrėjų nesiruošia skirti daug laiko ir pastangų į pažangų juostos algoritmus, nes, tiesą sakant, yra daug svarbesnių užduočių praleisti laiką.
Žinoma, jūs turite visokeriopą teisę susierzinti kai progreso juosta greitai pasiekia 99%, o likusį procentą paliekate palaukti 5 minutes. Bet jei atitinkama programa veikia gerai, tiesiog primenate, kad kūrėjas turi savo prioritetus tiesiai.
Ką apsvarstyti prieš perkant elektrinį automobilį
Jei neseniai atkreipėte dėmesį į antraštes, galbūt manote, kad dabar geresnis laikas, nei kada nors anksčiau, nutekėti dujomis varomus automobilius už viską elektrą. Tačiau daugelis žmonių, kurie nori pirkti elektrinį automobilį, dažnai daro klaidą įkeliant saulės energiją krepšį prieš arklį. Elektriniai automobiliai turi trumpesnį diapazoną Pradėkime nuo akivaizdžiausiausio ir svarbaus aspekto: elektra varomos transporto priemonės (EV) vis dar negali keliauti iki dujų automobilio .
Kaip pridėti pjūvio valdiklių į savo "Android" telefoną, nereikalaujama joks šriftas
Jei anksčiau niekada nenaudojote "Android" įrenginio pyptelėjimo valdymo elementų, praleidžiate. Pjūklo valdikliai yra unikalus būdas greitai pasiekti savo naršymo mygtukus ir kitus sparčiuosius klavišus, kurių ekrane nepadeda jokios vietos - jūs tiesiog perbraukite iš šono, kad juos pakeltumėte. Šie valdikliai jau seniai yra pagrindiniai elementai kai kuriuos pasirinktinius ROM ir Xposed modulius daugelį metų, tačiau jums nereikia pereiti prie šaknų, kad juos gauti - galite tiesiog atsisiųsti programą iš "Google Play" parduotuvės.