A velocidade de execução do software deve estar dentro de uma faixa aceitável para o usuário. Freqüentemente, melhorar a velocidade dessas rotinas de curta duração, mas usadas com frequência, aumentará muito a velocidade geral do software.
Para melhorar a velocidade, é claro, primeiro você precisa saber medir o tempo. Ok, então vamos considerar a situação na pista Assim que o canhão disparar, pressione o cronômetro para iniciar a cronometragem e encerrar a cronometragem quando o jogador chegar à linha de chegada. Nesse momento, você poderá saber o tempo utilizado pelo jogador. . Antes de iniciar a próxima rodada, o cronômetro deve ser zerado. O .NET2.0 também fornece esse cronômetro: classe Stopwatch, que pode medir o tempo com mais precisão.
Teste de velocidade:
O desempenho e a testabilidade do software são um tópico complexo. Garantir que uma aplicação atenda às expectativas do usuário requer considerar seu desempenho e testabilidade durante o ciclo de desenvolvimento. Isso é crucial durante a fase de design; um design ruim quase certamente levará a uma experiência do usuário ruim. Contudo, um bom design por si só não garante que o programa será executado de forma eficiente. A qualidade do código final é igualmente importante.
Medir uma rotina de longa duração é bastante simples. Se um processo durar vários minutos, um relógio poderá ser usado para registrar o tempo. Por exemplo, para um processo que leva dois minutos para ser executado, uma melhoria de 10% pode economizar 12 segundos, o que é fácil de determinar.
E se você quiser medir um processo de muito curto prazo, terá que considerar uma maior precisão. Por exemplo, existem algumas rotinas muito pequenas que podem levar apenas um milésimo de segundo para serem executadas, mas serão chamadas 1 milhão de vezes. O efeito cumulativo é óbvio. Nas versões anteriores do .NET framework, você precisava usar funções da API do Windows e, no .NET framework 2.0, a Microsoft introduziu a classe Stopwatch (é nosso cronômetro) para simplificar as tarefas de medição de tempo.
Aula de cronômetro:
Usar a classe Stopwatch para medir o tempo é muito simples. Como os cronômetros na vida real, os objetos desta classe também podem iniciar, parar e retornar a zero (zerar) o contador, mas é muito mais preciso do que os cronômetros comuns. Pode ter precisão de microssegundos (ou seja, milhões de segundos). . fração de segundo).
Código de exemplo:
Para demonstrar o uso do Stopwatch, vamos usar um trecho de código. Aqui está um aplicativo de console que acumula todos os números inteiros entre 1 e 1 milhão:
usando o
namespace StopWatchClass
{
programa de aula
{
vazio estático principal(string[] args)
{
total longo = 0;
para (int i = 1; i <= 10000000; i++)
{
total += eu;
}
}
}
}
Adicionar objeto Cronômetro:
A classe Stopwatch está localizada no namespace System.Diagnostics. Aqui está o código após adicionar o objeto:
usando o sistema;
usando
o namespace System.Diagnostics StopWatchClass
;
{
programa de aula
{
vazio estático principal(string[] args)
{
Cronômetro = new Cronômetro();
total longo = 0;
para (int i = 1; i <= 10000000; i++)
{
total += eu;
}
}
}
}
Controle o objeto Cronômetro:
Stopwatch fornece vários métodos para controlar o objeto Stopwatch. O método Start inicia uma operação de cronometragem e o método Stop interrompe a cronometragem. Neste momento, se o método Start for usado pela segunda vez, a cronometragem continuará e o resultado final da cronometragem será o acúmulo das duas cronometragem. Para evitar essa situação, use o método Reset para zerar o objeto antes do segundo temporizador. Nenhum desses três métodos requer parâmetros. O código é:
usando o sistema;
usando
o namespace System.Diagnostics StopWatchClass
;
{
programa de aula
{
vazio estático principal(string[] args)
{
Cronômetro = new Cronômetro();
total longo = 0
;
para (int i = 1; i <= 10000000; i++)
{
total += eu;
}
temporizador.Stop();
}
}
}
Leia os resultados do cronômetro:
<!--[if !supportLists]--><!--[endif]--> Após finalizar a cronometragem, o próximo passo é ler os resultados da cronometragem. A classe Stopwatch fornece as seguintes propriedades:
<!--[if !supportLists]--><!--[endif]--><!--[if !supportLists]--><!--[endif]-->
Elapsed: Retorna um objeto TimeSpan, representando o intervalo de tempo;
ElapsedMilliseconds: Retorna o número de microssegundos passados pelo tempo. A precisão é um pouco menor, adequada para um tempo um pouco mais longo;
ElapsedTicks: Retorna o número de tiques do temporizador decorridos. Um tique do cronômetro é a menor unidade de medida possível para um objeto Cronômetro. A duração do cronômetro é determinada pelo computador e sistema operacional específicos. O valor do campo estático Frequência do objeto Cronômetro representa o número de tiques do cronômetro contidos em um segundo. Observe a diferença nas unidades de tempo utilizadas pela propriedade Ticks do TimeSpan.
Uma dessas propriedades deve ser selecionada com base na tarefa de temporização. Em nosso programa de exemplo, a propriedade Elapsed fornece a precisão necessária para gerar o número de microssegundos decorridos. Esta também é a maior precisão do TimeSpan.
Aqui está o código final do programa:
usando o sistema;
usando
o namespace System.Diagnostics StopWatchClass
;
{
programa de aula
{
vazio estático principal(string[] args)
{
Cronômetro = new Cronômetro();
total longo = 0
;
para (int i = 1; i <= 10000000; i++)
{
total += eu;
}
timer.Stop();
micro decimal = timer.Elapsed.Ticks / 10m;
Console.WriteLine("O tempo de execução foi de {0:F1} microssegundos.", micro);
}
}
}
Além disso, use a propriedade IsRunning para verificar se uma instância do Stopwatch está cronometrando e use o método StartNew para iniciar um novo cronômetro.