Como o Windows determina quanto tempo leva para executar uma determinada ação em um arquivo?

10

Eu queria saber se há uma equação que o Windows usa para determinar quanto tempo leva para executar uma ação em um arquivo, por exemplo, excluir, copiar, apagar ou instalar.

Porexemplo,quandoestouexcluindoumarquivo,eoWindowsdiz"Tempo restante: 18 segundos", como ele está calculando esse número e usando o que?

    
por yuritsuki 16.07.2014 / 05:34

2 respostas

20

Você notou que normalmente não há estimativas nos primeiros segundos?

Isso porque nos primeiros segundos ele apenas faz a operação necessária. Então, depois de um (pequeno) while, ele sabe quanto já copiou / apagou / 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.

Isto é matemática da escola primária. Se você deseja viajar 360 km e, no final do primeiro minuto, percorrer 1 km, quanto tempo levará para chegar ao seu destino?

Bem, a velocidade é de 1 km / minuto. Isso é 60 km / h. 360 km divididos por 60 km / h dá-lhe 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 "viagem" por "copiar" e "km" por "bytes" e essa é a sua pergunta.

Diferentes sistemas têm maneiras diferentes de estimar o tempo. Você pode aproveitar o último minuto, e as estimativas podem variar muito, ou você pode aproveitar o tempo todo, e se a velocidade realmente mudar permanentemente, suas estimativas podem estar muito longe da realidade. O que eu descrevi é o método mais simples.

    
por 16.07.2014 / 06:12
1

responder com uma simples multiplicação cruzada é terrivelmente condescendente Eu acho, tenho certeza que ele já sabia disso, é como nós constantemente adivinhamos as coisas em nossa cabeça também.

O problema com as barras de progresso da operação de arquivos é que ela é correta apenas para dados uniformes, portanto, se você copiar 100 arquivos do mesmo tamanho e sua unidade não estiver fazendo mais nada, o progresso estimado será visível, mas se os primeiros 99 arquivos eram pequenos arquivos txt eo último é um grande arquivo de vídeo? O progresso será DESLIGADO.

Esse problema aumenta ainda mais quando você não está lidando com arquivos em uma pasta, mas com várias subpastas. Digamos que você tenha 5 subpastas e queira excluí-las (o tamanho não importa muito nesse caso), as 4 primeiras pastas contêm apenas menos de 10 arquivos, então, quando a operação chegar à 5ª pasta, ela pensa que é 80% pronto e boom 5ª pasta contém 5000 arquivos e seu progresso volta para 1%

O WinXP tentou contornar isso contando previamente o número de arquivos, o que significa que quando a pasta não foi indexada no Windows, dependendo do número de arquivos, o XP não iniciou a operação nos primeiros 20 segundos (tempo levou para contar) o que deixou todo mundo furioso.

Então, embora eu também não tenha um conhecimento especial sobre como o Windows faz isso (mas o que mais há além da contagem de arquivos e bytes), espero poder ilustrar por que ele é defeituoso e porque nunca será perfeito.

O melhor que você poderia fazer seria não depender apenas do contador de bytes OR, mas criar uma média entre os dois.

Ou se você quisesse ficar ainda mais louco, o sistema operacional poderia iniciar um banco de dados de quanto tempo essas operações levaram no passado em sua máquina e incluir isso na equação.

Pensamento final: se alguém pensasse em um sistema de arquivos que informasse o tamanho de cada pasta, sem calcular primeiro, você teria pelo menos uma estimativa de progresso correta ao excluir pastas inteiras e não apenas partes dela.

    
por 18.07.2014 / 18:30