Eu queria saber se existe uma equação usada pelo Windows para determinar quanto tempo leva para executar uma ação em um arquivo, por exemplo, excluir, copiar, apagar ou instalar.
Por exemplo, quando estou excluindo um arquivo, e o Windows diz "Tempo restante: 18 segundos", como está calculando esse número e usando o quê?
windows
file-transfer
file-management
yuritsuki
fonte
fonte
timeLeft = random(1,100);
Respostas:
Você já reparou que, geralmente, não fornece estimativas nos primeiros segundos?
Isso ocorre porque, nos primeiros segundos, ele faz a operação que precisa fazer. Depois de um tempo (pequeno), ele sabe quanto já copiou / excluiu / etc e quanto tempo levou . Isso fornece a velocidade média da operação.
Em seguida, divida os bytes restantes pela velocidade e você terá o tempo necessário para concluir a operação.
Isso é matemática da escola primária. Se você deseja percorrer 360 km e, no final do primeiro minuto, percorreu 1 km, quanto levará para chegar ao seu destino?
Bem, a velocidade é de 1 km / minuto. Isso é 60 km / h. 360 km dividido por 60 km / h fornece 6 horas (ou 360 km / 1 km / minuto = 360 minutos = 6 horas). Como você já viajou por um minuto, o tempo estimado restante é de 5 horas e 59 minutos.
Substitua "viajar" por "copiar" e "km" por "bytes" e essa é a sua pergunta.
Sistemas diferentes têm maneiras diferentes de estimar o tempo. Você pode aproveitar o último minuto e as estimativas podem variar bastante, ou o tempo inteiro e, se a velocidade realmente mudar permanentemente, suas estimativas podem estar muito distantes da realidade. O que eu descrevi é o método mais simples.
fonte
1%
demoratime so far * rand[0 - 10]
enquanto exibefew seconds left
responder com uma simples multiplicação cruzada é terrivelmente condescendente, eu acho, tenho certeza de que ele já sabia disso, é como nós também adivinhamos constantemente as coisas em nossa mente.
O problema com as barras de progresso da operação de arquivo é que ele só está correto para dados uniformes; portanto, se você copiar 100 arquivos com o mesmo tamanho e sua unidade não estiver fazendo mais nada, o progresso estimado estará no local, mas e se o primeiro 99 arquivos eram pequenos arquivos txt e o último é um arquivo de vídeo grande? O progresso será MUITO FORA.
Esse problema aumenta ainda mais quando você não está manipulando arquivos em uma pasta, mas em várias subpastas. Digamos que você tenha 5 subpastas e deseje excluí-las (nesse caso, o tamanho não importa muito), as 4 primeiras pastas contêm apenas menos de 10 arquivos; portanto, no momento em que a operação chega à 5ª pasta, ela pensa que é sobre 80% concluído, e a 5ª pasta do boom contém 5000 arquivos e seu progresso volta para 1%
O WinXP tentou contornar isso contando o número de arquivos anteriormente, o que significava que, quando a pasta não era indexada no Windows, dependendo do número de arquivos, o XP realmente não iniciava a operação nos primeiros 20 segundos (tempo necessário para contagem), o que deixou todo mundo furioso.
Portanto, embora eu também não tenha conhecimento especial de como o Windows faz isso (mas o que mais existe além da contagem de arquivos e bytes), espero poder ilustrar por que ele é defeituoso e por que nunca será perfeito.
O melhor que você poderia fazer seria não confiar apenas na contagem de arquivos OU pelo número de entradas, mas criar uma média das duas.
Ou, se você quiser enlouquecer, o sistema operacional poderá iniciar um banco de dados de quanto tempo essas operações levaram no passado em sua máquina e levar isso em consideração na equação.
Pensamento final: se alguém pensasse em um sistema de arquivos que informasse o sistema operacional sobre o tamanho de cada pasta, sem calculá-la primeiro, você obteria uma estimativa correta do progresso ao excluir pastas inteiras e não apenas partes dela.
fonte