Chciałem wiedzieć, czy istnieje równanie, którego system Windows używa do określenia, ile czasu zajmuje wykonanie pliku, powiedzmy usunąć, skopiować, skasować lub zainstalować.
Na przykład, kiedy usuwam plik, a system Windows mówi „Pozostały czas: 18 sekund”, jak oblicza ten numer i jakiego używa?
windows
file-transfer
file-management
yuritsuki
źródło
źródło
timeLeft = random(1,100);
Odpowiedzi:
Czy zauważyłeś, że zwykle nie daje to żadnych szacunków w pierwszych sekundach?
To dlatego, że w pierwszych sekundach wykonuje tylko operację, którą musi wykonać. Następnie, po (krótkim) czasie, wie, ile już skopiował / usunął / etc i jak długo to trwało . To daje średnią prędkość operacji.
Następnie podziel pozostałe bajty przez prędkość, a będziesz miał czas, aby ukończyć operację.
To matematyka w szkole podstawowej. Jeśli chcesz przejechać 360 km, a pod koniec pierwszej minuty przejechałeś 1 km, ile zajmie ci dotarcie do miejsca docelowego?
Prędkość wynosi 1 km / minutę. To 60 km / h. 360 km podzielone przez 60 km / h daje 6 godzin (lub 360 km / 1 km / minutę = 360 minut = 6 godzin). Ponieważ podróżowałeś już przez minutę, szacowany pozostały czas to 5 godzin i 59 minut.
Zamień „podróż” na „kopiuj” i „km” na „bajty” i to jest twoje pytanie.
Różne systemy mają różne sposoby szacowania czasu. Możesz zająć ostatnią chwilę, a prognozy mogą się bardzo różnić lub możesz zająć cały czas, a jeśli prędkość faktycznie zmieni się na stałe, twoje prognozy mogą być dalekie od rzeczywistości. To, co opisałem, jest najprostszą metodą.
źródło
1%
trwatime so far * rand[0 - 10]
podczas wyświetlaniafew seconds left
odpowiadanie prostym pomnożeniem krzyżowym jest okropnie protekcjonalne. Myślę, że jestem pewien, że już o tym wiedział. W ten sposób nieustannie zgadujemy, co dzieje się w naszej głowie.
Problem z paskami postępu operacji na plikach polega na tym, że są one poprawne tylko dla jednolitych danych, więc jeśli skopiujesz 100 plików, które mają ten sam rozmiar, a dysk nie robi nic innego, szacowany postęp będzie zauważalny, ale co jeśli pierwszy 99 plików to małe pliki TXT, a ostatni to duży plik wideo? Postęp będzie WOLNY.
Problem ten nasila się, gdy nie zarządzasz plikami w jednym folderze, ale w wielu podfolderach. Załóżmy, że masz 5 podfolderów i chcesz je usunąć (wtedy rozmiar nie ma większego znaczenia), pierwsze 4 foldery zawierają tylko mniej niż 10 plików, więc zanim operacja dotrze do 5. folderu, o którym myśli, że chodzi o 80% zrobione, a boom 5. folder zawiera 5000 plików, a twoje postępy wracają do 1%
WinXP próbował obejść ten problem, licząc wcześniej liczbę plików, co oznaczało, że kiedy folder nie był indeksowany w systemie Windows, w zależności od liczby plików, XP tak naprawdę nie zaczął operacji przez pierwsze 20 sekund (czas potrzebny na to hrabia), co doprowadziło wszystkich do wściekłości.
Więc chociaż nie mam specjalnej wiedzy na temat tego, jak to robi Windows (ale co tam jeszcze oprócz liczenia plików i bajtów), mam nadzieję, że zilustruję, dlaczego jest wadliwy i dlaczego nigdy nie będzie idealny.
Najlepsze, co możesz zrobić, to nie polegać wyłącznie na liczbie plików LUB liczbie bajtów, ale zbudować średnią z tych dwóch.
Lub jeśli chcesz się bardziej zwariować, system operacyjny może uruchomić bazę danych na temat tego, jak długo te operacje trwały w przeszłości na twoim komputerze i uwzględnić to w równaniu.
Ostatnia myśl: jeśli ktoś pomyśli o systemie plików, który poinformowałby system operacyjny o rozmiarze każdego folderu, bez jego wcześniejszego obliczenia, uzyskałbyś przynajmniej poprawne oszacowanie postępu podczas usuwania całych folderów, a nie tylko ich części.
źródło