Na první pohled se zdá, že vytváření přesného odhadu času by mělo být poměrně snadné. Koneckonců, algoritmus vytvářející graf pokroku zná všechny úkoly, které musí udělat před časem ... správně?
Z velké části je pravda, že zdrojový algoritmus neví, co potřebuje udělat před časem. Určitý čas, který bude vyžadovat provedení každého kroku, je však velmi obtížný, ne-li prakticky nemožný úkol.
Nejjednodušší způsob implementace pruhu postupu je použití grafického reprezentace čítače úkolů. Kde je procento dokončeno jednoduše vypočteno jako Dokončené úkoly / Celkový počet úkolů . Zatímco toto je logický smysl pro první myšlenku, je důležité si uvědomit, že některé úkoly trvají déle.
Zvažte následující úkoly prováděné instalátorem:
Tento typ implementace je vlastně poměrně častý mezi bary postupu protože, jak bylo uvedeno výše, je snadné jej realizovat. Nicméně, jak vidíte, je vystaveno nepřiměřeným úlohám, které se skládají z procenta progrese
aktuálního , protože se týká zbývajícího času. Chcete-li toto vyřešit, některé pokročilé sloupce mohou používat implementace, kde jsou váhy váženy. Zvažte výše uvedené kroky, kde je přiřazena relativní váha pro každý krok:
Vytvořit strukturu složek. [Hmotnost = 1]
Předchozí výsledky nezaručují budoucí výkon
Jakmile dosáhne počet 25, začnu házet tenisové míče na vás. Je pravděpodobné, že se to vaše rytmus zlomí, protože se vaše koncentrace přesunula od přísného započítávání čísel do vyhýbavých míčů, které vám hodili cestu. Za předpokladu, že jste schopni pokračovat v počítání, vaše tempo jistě zpomalilo. Takže nyní se průběžný pruh stále pohybuje, ale s mnohem pomalejším tempem s předpokládaným časem, který zůstává buď v klidu, nebo ve skutečnosti vyšším.
Pro praktičtější příklad toho zvážíte stahování souboru. Aktuálně stahujete 100 MB soubor rychlostí 1 MB / s. To je velmi snadné určit odhadovaný čas dokončení. Ale 75% z toho, že některé hity za přetížení sítě a rychlost stahování klesne na 500 KB / s.
V závislosti na tom, jak prohlížeč vypočítá zbývající čas, může vaše ETA okamžitě přejít z 25 sekund na 50 sekund
Zbývající velikost / Rychlost stahování ) nebo s největší pravděpodobností prohlížeč používá algoritmus s klouzavým průměrem, který by se přizpůsobil kolísání přenosové rychlosti bez zobrazování dramatických skoků uživateli. algoritmus válcování s ohledem na stahování souboru může fungovat takto: Rychlost přenosu za posledních 60 sekund je zapamatována s nejnovější hodnotou nahrazující nejstarší (např. 61. hodnota nahrazuje první)
Efektivní přenos míra pro výpočet je průměr těchto měření.
U 76 sekund (kde rychlost přenosu klesne na 500 KB) se stává ~ 992 KB (59,500 KB / 60), což zbyde zbývajícího času ~ 24,7 sekundy (24,500 KB / 992 KB).
Nakonec, nepřesnost pruhu pokroku se snižuje na skutečnost, že se snaží určit čas pro něco, co je nedeterministická. Vzhledem k tomu, že počítače zpracovávají úkoly jak na požádání, tak na pozadí, je téměř nemožné vědět, jaké systémové prostředky budou v budoucnosti k dispozici - a to je dostupnost systémových prostředků, které jsou potřebné pro dokončení jakékoli úlohy. > Použití jiného příkladu předpokládejme, že používáte aktualizaci programu na serveru, který provádí poměrně intenzivní aktualizaci databáze. Během tohoto procesu aktualizace uživatel odesílá náročnou žádost do jiné databáze spuštěné v tomto systému. Nyní musí serverové zdroje, konkrétně pro databázi, zpracovávat požadavky jak na upgrade, tak na dotaz spuštěný uživatelem - scénář, který bude určitě vzájemně škodlivý pro dobu provádění. Alternativně může uživatel iniciovat velký požadavek na přenos souborů, který by zdanil propustnost ukládání dat, která by také snížila výkon. Nebo by se mohla spustit naplánovaná úloha, která provádí proces náročný na paměť. Získáte nápad.
Jako možná realističtější instance pro každodenní uživatele - zvažte spuštění služby Windows Update nebo antivirové kontroly. Obě tyto operace provádějí operace náročné na zdroje na pozadí. Výsledkem toho je, že každý postup závisí na tom, co uživatel v té době dělá. Pokud čtete svůj e-mail během běhu, pravděpodobně bude poptávka po systémových zdrojích nízká a průběžný pruh se bude posunovat důsledně. Na druhou stranu, pokud děláte úpravu grafiky, pak bude vaše poptávka po systémových zdrojích mnohem větší, což způsobí, že pohybový posun bude schizofrenní.
V konečném důsledku to opravdu nemá záležitost
Záměrem ukazatele postupu je dobře naznačit, že je skutečně dosaženo pokroku a příslušný proces není zavěšen. Je pěkné, když je ukazatel pokroku přesný, ale obvykle je to jen nepatrná nepríjemnost, když tomu tak není. Z velké části se vývojáři nebudou věnovat hodně času a úsilí algoritmům pokrokových barů, protože upřímně řečeno, jsou mnohem důležitější úkoly věnovat se časům.
Samozřejmě máte všechno právo být zlobí když okamžitě dokončíte ukazatel pokroku až na 99%, a pak vyčkejte 5 minut na zbývající jedno procento. Pokud však příslušný program funguje dobře, připomeňte si, že vývojář měl své priority rovno.
Jak omezujete využití procesoru Microsoft Excel při spouštění funkcí VBA?
Pokud máte funkci VBA, která mění aplikaci Microsoft Excel na CPU, můžete i nadále používat počítač pro další činnosti, zatímco aplikace Excel končí? Dnešní příspěvek SuperUser Q & A přichází k záchraně, aby pomohl frustrovanému čtenáři, aby získal zpět kontrolu nad Excelem. Dnešní zasvěcování o otázce a odpovědi se nám stalo s laskavým svolením SuperUseru - subdivize Stack Exchange, komunitně řízeného seskupení webových stránek Otázky a odpovědi.
Jak trvale deaktivujete dotykovou plochu na notebooku?
Touchpad může být pro většinu lidí mimořádně užitečný, ale existují chvíle, kdy je to jen trochu více než podráždění, tak jak se trvale deaktivovat dotykovou plochu, pokud ji nechcete nebo potřebujete? Dnešní příspěvek SuperUser Q & A má odpovědi na pomoc frustrovanému čtečce. Dnešní zasedání Otázky a odpovědi nás přichází s laskavým svolením SuperUseru - dílčího rozdělení Stack Exchange, což je komunita řízená seskupení webových stránek Otázky a odpovědi.