Artigo: 306979 - Última revisão: segunda-feira, 11 de Dezembro de 2006 - Revisão: 1.4

A criação de classes e objectos no Visual C#

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Este artigo passo a passo descreve como utilizar a função QueryPerformanceCounter código de aplicação de tempo.

Quando testar o código para identificar congestionamentos de desempenho, que pretende utilizar o temporizador de resolução mais elevado que o sistema tem para oferecer.

Nota : JScript .NET não é possível chamar funções da API do Microsoft Windows.

Criar e, em seguida, executar uma aplicação de demonstração

  1. Inicie o Visual Studio .NET ou Visual Studio 2005 e crie uma nova aplicação Visual C# consola.
  2. Substituir o código por defeito o seguinte código, vezes operações em incrementos de 100:
    using System;
    using System.Runtime.InteropServices;
    
    namespace csConPerfCounter
    {
    	class Class1
    	{
    		[DllImport("kernel32.dll")]
    		extern static short QueryPerformanceCounter(ref long x);
    		[DllImport("kernel32.dll")]
    		extern static short QueryPerformanceFrequency(ref long x);
    
    		static void Main(string[] args)
    		{
    			long ctr1 = 0, ctr2 = 0, freq = 0;
    			int acc = 0, i = 0;
    			if (QueryPerformanceCounter(ref ctr1)!=0)	// Begin timing.
    			{
    				for (i=0; i<100; i++) acc++;		// Code being timed.
    				QueryPerformanceCounter(ref ctr2);	// Finish timing.
    				Console.WriteLine("Start Value: " + ctr1);
    				Console.WriteLine("End Value: " + ctr2);
    				QueryPerformanceFrequency(ref freq);
    				Console.WriteLine("QueryPerformanceCounter minimum resolution: 1/" + freq + " seconds.");
    				Console.WriteLine("100 Increment time: " + (ctr2 - ctr1) * 1.0 / freq + " seconds.");
    			}
    			else
    			   Console.WriteLine("High-resolution counter not supported.");
    
    			// Make the console window wait.
    
    			Console.WriteLine();
    			Console.Write("Press Enter to finish ... ");
    			Console.Read();
    		}
    	}
    }
    					
  3. Guarde a aplicação e prima a tecla F5 para compilar e executar a aplicação. Janelas da consola devem apresentar resultados semelhantes à seguinte:
    Start Value: 281060816204
    End Value: 281060816269
    QueryPerformanceCounter minimum resolution: 1/3579545 seconds.
    100 Increment time: 1.81587324646009E-05 seconds.
    
    Press Enter to finish ...
    					
  4. Prima ENTER para terminar a aplicação e feche a janela da consola.

Resolução de problemas

  • Esta chamada de API pode falhar em algumas circunstâncias. Verifique o valor devolvido e ajustar o código para garantir que recebe resultados válidos.
  • Para obter melhores resultados, teste a aplicação várias vezes com não outras aplicações ou processos de servidor em execução. Actividades em outros threads e processos podem afectar a percentagem de tempo que o sistema despende na aplicação de destino.

Referências

Para mais informações, procure "QueryPerformanceCounter" e "QueryPerformanceFrequency" na ajuda online.

Para mais informações sobre outros temporizadores, procure "timeGetTime", "ObterContagemMarcaEscala" e "System.DateTime class" na ajuda online.


A informação contida neste artigo aplica-se a:
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
Palavras-chave: 
kbmt kbhowtomaster kbperformance KB306979 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 306979  (http://support.microsoft.com/kb/306979/en-us/ )