lt.phhsnews.com


lt.phhsnews.com / Kodėl pažangos barai yra tokie netikslūs?

Kodėl pažangos barai yra tokie netikslūs?


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.

Visi užduotys nėra lygios

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:

  1. Sukurkite aplanko struktūrą.
  2. Išskleiskite ir nukopijuokite 1 GB vertes failų.
  3. Sukurti registro įrašus.
  4. Sukurti pradinio meniu įrašus.

Š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:

  1. Sukurkite aplanko struktūrą. [Weight = 1]
  2. Išspausdinkite ir kopijuokite 1 GB vertes failų. [Svoris = 7]
  3. Sukurti registro įrašus. [Weight = 1]
  4. Sukurkite pradžios meniu įrašus. [Weight = 1]

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ą.

Ankstesni rezultatai negarantuoja ateities našumo

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ą).

  • Veiksmingas perkėlimas Skaičiavimo tikslas yra šių matavimų vidurkis.
  • Likutis apskaičiuojamas kaip:
  • Išlaikomasis / efektyvus atsisiuntimo greitis Taigi naudodamiesi anksčiau pateiktu scenarijumi (paprastumo sumetimais naudosime 1 MB = 1,000 KB):

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).

  • Po 76 sekundžių (kai perdavimo greitis sumažėja iki 500 KB) tampa ~ 992 KB (59 500 KB / 60), dėl kurio laikas lieka ~ 24,7 sekundės (24 500 KB / 992 KB).
  • Po 77 sekundžių: veiksmingas greitis = ~ 983 KB (59 000 KB / 60) ~ 24,4 sekundės (24 000 KB / 983 KB).
  • Po 78 sekundžių: efektyvus greitis = 975 KB (58 500 KB / 60). Liko ~ 24,1 sekundės (23 500 KB / 975 KB). čia atsiradęs modelis, kaip nusileidimo greitis, lėtai įtraukiamas į vidurkį, kuris naudojamas norint įvertinti likusį laiką. Pagal šį metodą, jei nusileidimas truko tik 10 sekundžių, o paskui grįžo į 1 MB / s, vartotojas vargu ar pastebės skirtumą (išskyrus labai mažą tašką numatytame laiko skaičiavimo laikui).
  • Pasiekimas prie žalvario trinkelių - tai tiesiog metodika perduoti informaciją galutiniam vartotojui dėl faktinės priežasties ...

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į.

Naudodami kitą pavyzdį, tarkime, jūs naudojate programos atnaujinimą serveryje, kuriame atliekamas gana intensyvus duomenų bazės atnaujinimas. Šio atnaujinimo proceso metu vartotojas siunčia reikalaujantį užklausą kitai šios sistemos naudojamai duomenų bazei. Dabar serverio ištekliai, ypač duomenų bazės, turi apdoroti tiek naujinimo, tiek naudotojo inicijuotos užklausos užklausas, - tai scenarijus, kuris neabejotinai kenkia vykdymo trukmei. Be to, vartotojas gali inicijuoti didelį failų perdavimo užklausą, pagal kurią būtų galima apmokestinti saugojimo pralaidumą, kuri taip pat sumažintų našumą. Arba gali įvykti suplanuota užduotis, atliekanti atminties intensyvų procesą. Jūs gaunate idėją.

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.


Kaip naudoti skaitytuvą

Kaip naudoti skaitytuvą "Mac OS X" kompiuteryje

Dokumento nuskaitymas "Mac OS X" yra labai paprastas, bet tiems, kurie gali būti nepažįstami arba atvyksta iš "Windows", tai yra SUSIJUSIOS: Kaip nuskaityti dokumentus į PDF su "Android" telefono kamera Verta paminėti, kad geras procentas laiko, kai galite naudoti tik išmaniojo telefono kamerą ir lengvai nuskaitykite jį į PDF.

(how-to)

Išjunkite paleisties programas "Windows 7/8/10

Išjunkite paleisties programas "Windows 7/8/10

Ar nenorite, kad paleidžiate kompiuterį ir laukite 10 minučių, kol įkeliamos visų rūšių programos: Dropbox, antivirusinė, "Chrome", "Java", "Apple", "Adobe", grafikos tvarkyklės, spausdintuvo tvarkyklės ir tt! Manau, kad tu mano tašką. Jei turite įkrovimo tonų programas, kurias netyčia naudojate paleisties metu, jos iš esmės nieko nedaro, tik sulėtindamos kompiuterį ir turėtų būti išjungtos.use the program, that

(How-to)