Miks on Progress Baarid nii ebatäpsed?

Sisukord:

Miks on Progress Baarid nii ebatäpsed?
Miks on Progress Baarid nii ebatäpsed?

Video: Miks on Progress Baarid nii ebatäpsed?

Video: Miks on Progress Baarid nii ebatäpsed?
Video: Tesher x Jason Derulo - Jalebi Baby (Official Video) - YouTube 2024, Aprill
Anonim
Esialgu mõtlesin, et ajahetke täpse hindamise loomine peaks olema suhteliselt lihtne. Lõppude lõpuks annab edenemisriba koostamise algoritm teada kõik ülesanded, mida ta vajab enne tähtaega … eks?
Esialgu mõtlesin, et ajahetke täpse hindamise loomine peaks olema suhteliselt lihtne. Lõppude lõpuks annab edenemisriba koostamise algoritm teada kõik ülesanded, mida ta vajab enne tähtaega … eks?

Suurem osa on tõsi, et lähtekoodi algoritm teab, mida ta vajab enne tähtaega. Sellegipoolest on iga etapi läbiviimiseks kuluv aeg keeruline, kui mitte peaaegu võimatu ülesanne.

Kõik ülesanded ei ole võrdsed

Edenemisriba rakendamise lihtsaim viis on kasutada ülesandeloendurit graafiliselt. Kui protsent on täielik, arvutatakse lihtsalt Lõpetatud ülesanded / ülesannete koguarv. Kuigi see muudab esimese mõtte jaoks loogilise tähenduse, on oluline meeles pidada, et (ilmselt) mõned ülesanded vajavad rohkem aega.

Mõtle installerite järgmised ülesanded:

  1. Loo kausta struktuur.
  2. Loobu ja kopeerige 1 GB faili.
  3. Loo registrikandeid.
  4. Loo käivitusmenüü kirjed.

Selles näites toimivad sammud 1, 3 ja 4 väga kiiresti, samas kui 2. samm võtab aega. Nii et lihtsa loendusega töötava edenemisriba hüppab väga kiiresti 25% -ni, kuid samm 2 töötab veidi, ja seejärel lööb peaaegu kohe 100% -ni.

Selline rakendamine on tõepoolest üsna tavaline edenemisribade hulgas, kuna, nagu eespool öeldud, on seda lihtne rakendada. Kuid nagu näete, on sellel seotud ebaproportsionaalsed ülesanded tegelik edusammude protsent, kuna see on seotud ülejäänud ajaga.

Selle ümbertegemiseks võivad mõned edenemisribad kasutada rakendusi, kus samme kaalutakse. Mõtle ülaltoodud samme, kui igale sammule määratakse suhteline kaal:

  1. Loo kausta struktuur. [Kaal = 1]
  2. Loobu ja kopeerige 1 GB faili. [Kaal = 7]
  3. Loo registrikandeid. [Kaal = 1]
  4. Loo käivitusmenüü kirjed. [Kaal = 1]

Selle meetodi abil tõuseb edenemisriba sammude 1, 3 ja 4 sammuga 10% (kogukaalina 10), kusjuures baas tõuseb 10% ja samm 2 liigub 70%. Kuigi see ei ole kindlasti täiuslik, on sellised meetodid lihtsad viisid edetabeli protsendi lisamiseks veidi täpsemaks.

Varasemad tulemused ei garanteeri tulevaste tulemuste saavutamist

Mõelge minu lihtsa näitena, paludes teil lugeda kuni 50-ni, kui ma kasutan stopperit teie ajani. Oletame, et arvate 10 sekundi jooksul 25-ni. Oleks mõistlik eeldada, et loete ülejäänud numbrid veel 10 sekundit, nii et edenemisriba jälgimine näitab seda 50% ja jääb veel 10 sekundiks.
Mõelge minu lihtsa näitena, paludes teil lugeda kuni 50-ni, kui ma kasutan stopperit teie ajani. Oletame, et arvate 10 sekundi jooksul 25-ni. Oleks mõistlik eeldada, et loete ülejäänud numbrid veel 10 sekundit, nii et edenemisriba jälgimine näitab seda 50% ja jääb veel 10 sekundiks.

Kui teie loend jõuab 25-ni, hakkan ma siiski sind tennisepalli viskama. Tõenäoliselt rikub see teie rütmi, sest teie koondumine on liikunud rangelt numbrite loendamiselt ja viskamiseni pallidesse. Eeldades, et suudate lugemist jätkata, on teie tempo natuke aeglustunud. Nüüd läheb edenemisriba ikkagi liikumiseks, kuid on palju aeglasemas tempos, kui hinnanguline aeg jääb seisma või tõuseb kõrgemale.

Selle praktilisema näite puhul kaaluge failide allalaadimist. Praegu laadite alla 100 MB faili kiirusega 1 MB / s. Selle valimise eeldatav aeg on väga lihtne määrata. Kuid seal 75% seal asuvatest võrgukoormustest ja teie allalaadimiskiirus langeb kuni 500 KB / s.

Sõltuvalt sellest, kuidas brauser arvutab ülejäänud aja, võib ETA koheselt minna 25 sekundist 50 sekundini (ainult praeguse oleku abil: Suurus jääb / allalaadimise kiirus) või tõenäoliselt kasutab brauser valtset keskmist algoritmi, mis kohandaks edastuskiiruse kõikumisi ilma dramaatilisi hüppeid kasutajale kuvamata.

Valimisalgoritmi näide faili allalaadimise kohta võib toimida järgmiselt:

  • Viimase 60 sekundi jooksul ülekandekiirust mäletakse vanima väärtusega uusima väärtusega (nt 61 asendab esimese väärtusega).
  • Arvutamine on tõhus edastuskiirus nende mõõtmiste keskmine.
  • Ülejäänud aeg arvutatakse järgmiselt: Suurus jääb / efektiivne allalaadimise kiirus

Nii et kasutage ülaltoodud stsenaariumis (lihtsuse huvides kasutame 1 MB = 1000 KB):

  • Allalaaditud 75 sekundi jooksul on meie 60 meeles pidanud väärtused 1000 KB. Efektiivne edastuskiirus on 1000 KB (60 000 KB / 60), mis annab 25 sekundiks jääva aja (25 000 KB / 1000 KB).
  • Kui 76 sekundi jooksul (kui ülekandekiirus langeb alla 500 KB), on tegelik allalaadimise kiirus ~ 992 KB (59 500 KB / 60), mis annab 24,7 sekundiks (24 500 KB / 992 KB) jääva aja.
  • 77 sekundi jooksul: efektiivne kiirus = ~ 983 KB (59 000 KB / 60), mille tulemuseks jääb ~ 24,4 sekundit (24 000 KB / 983 KB).
  • 78 sekundi jooksul: efektiivne kiirus = 975 KB (58 500 KB / 60), mille tulemuseks jääb ~ 24,1 sekundit (23 500 KB / 975 KB).

Näete siin tekkivat mustrit, sest allalaadimise kiiruse langetamine lisandub aeglaselt keskmisesse, mida kasutatakse ülejäänud aja hindamiseks. Selle meetodi kohaselt, kui kastmine kestis ainult 10 sekundit ja seejärel tagastati 1 MB / s, ei pruugi kasutaja tõenäoliselt seda erinevust märgata (välja arvatud hinnanguline ajavahetähtaeg väga väikeses järjekorras).

Läbi messingipakendite saatmine - see on lihtsalt metoodika teabe edastamiseks lõppkasutajale tegeliku aluse põhjustajana …

Te ei suuda täpselt määratleda midagi, mis on mittestermistlik

Lõppkokkuvõttes tähendab edenemisriba ebatäpsus asjaolu, et ta üritab määrata aja, mis on mittedeterministiline. Kuna arvutid töötlevad nii nõudmisel kui ka taustal olevaid ülesandeid, on peaaegu võimatu teada, millised süsteemiressursid on tulevikus kättesaadavad, ja mis tahes ülesande täitmiseks vajalike süsteemiressursside olemasolu.

Kasutades mõnda teist näidet, arvutage, et kasutate serveriprogrammi uuendamist, mis teeb suhteliselt intensiivse andmebaasi värskenduse. Selle ajakohastamisprotsessi ajal saadab kasutaja seejärel nõudliku taotluse teisele andmebaasis, mis töötab selles süsteemis. Nüüd peavad serveri ressursid, konkreetselt andmebaasi jaoks, töötlema nii oma uuendatud päringuid kui ka kasutaja algatatud päringut - stsenaariumi, mis kindlasti täitmisajast vastastikku kahjulik. Alternatiivina võib kasutaja algatada suure failiedastuse taotluse, mis maksaks säilitamise läbilaskevõime, mis kahjustaks ka jõudlust. Või võib plaanitud ülesanne hakata minema, mis täidab mälu intensiivse protsessi. Sa saad selle idee.

Võib-olla on igapäevase kasutaja jaoks tõenäoliselt realistlikum näide - kaaluge Windowsi värskenduse käivitamist või viirusekontrolli. Mõlemad operatsioonid viivad taustal ressursimahukate operatsioonide juurde. Selle tulemusena sõltub iga edu saavutamine sellest, mida kasutaja sellel ajal teeb. Kui te seda e-kirja lugedes kasutate, on tõenäosus, et süsteemiressursside nõudmine on madal ja edenemisriba muutub järjekindlalt. Teisest küljest, kui teete graafilist toimetamist, siis on teie nõuded süsteemiressursside järele palju suuremad, mis muudab progressiariba liikumise skisofreeniaks.

Kokkuvõttes on lihtsalt, et kristallkuul puudub. Isegi süsteem ise ei tea, milline koormus see tulevikus on.

Lõppkokkuvõttes see tegelikult ei ole oluline

Protsessiriba eesmärk on hästi näidata, et edu on tõepoolest tehtud ja vastav protsess ei ole riputatud. Prognooside täpne nägemine on tore, kuid tavaliselt on see vaid väike ärritus, kui see pole nii. Enamasti ei pühenda arendajad aega ja jõupingutusi eduraamportimise algoritmidele, sest ausalt öeldes on palju ajakohasemaid ülesandeid.

Loomulikult on teil õigus häirida, kui edenemisriba hüppab viivitamatult lõpule 99% -ni ja muudab ootama 5 minutit ülejäänud ühe protsendi võrra. Kuid kui vastav programm töötab hästi, tuletage lihtsalt meelde, et arendaja oli oma prioriteedid otseses mõttes.

Soovitan: