Como usar a função de QueryPerformanceCounter para código de tempo no Visual C++

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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 815668
Para obter uma Microsoft Visual translation from VPE for Csharp .NET versão deste artigo, consulte 306979.

Para uma versão deste artigo do Microsoft Visual Basic. NET, consulte 306978.

Este artigo se refere ao seguinte namespace Microsoft .NET Framework Class Library:
  • Sistema

NESTA TAREFA

INTRODUÇÃO
Este artigo passo a passo descreve como usar a função de QueryPerformanceCounter para seu código de aplicativo de tempo. Quando você tempo o código do aplicativo para identificar afunilamentos de desempenho, você deseja usar o timer de resolução mais alto que o sistema tem a oferecer.

back to the top

Criar o aplicativo de demonstração e executar o aplicativo de demonstração

  1. Inicie o Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005.
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  3. No Microsoft Visual C++ .NET 2002, execute estas etapas:
    1. Em Project Types , clique em Visual C++ Projects .
    2. Em modelos , clique em Aplicativo de C++ gerenciado .
    No Visual C++ .NET 2003, execute estas etapas:
    1. Em Project Types , clique em Projetos do Visual c++ .
    2. Em modelos , clique em Aplicativo de console (NET) .
    No Visual C++ 2005, siga estas etapas:
    1. Em Project Types , clique em Visual C++ .
    2. Em modelos , clique em Aplicativo de console CLR .
  4. Na caixa nome , digite CodeTimer .
  5. Na caixa local , digite C:\test e, em seguida, clique em OK .
  6. No Solution Explorer, clique duas vezes em CodeTimer.cpp arquivo na pasta arquivos de origem.
  7. Adicione o seguinte código após a linha # include "stdafx.h" :
    #include <tchar.h>#include <windows.h>
  8. Substitua o código na função _tmain com o código a seguir:
    __int64 ctr1 = 0, ctr2 = 0, freq = 0;int acc = 0, i = 0;// Start timing the code.if (QueryPerformanceCounter((LARGE_INTEGER *)&ctr1)!= 0){	// Code segment is being timed.	for (i=0; i<100; i++) acc++;	// Finish timing the code.	QueryPerformanceCounter((LARGE_INTEGER *)&ctr2);	Console::WriteLine("Start Value: {0}",ctr1.ToString());	Console::WriteLine("End Value: {0}",ctr2.ToString());		QueryPerformanceFrequency((LARGE_INTEGER *)&freq);		Console::WriteLine(S"QueryPerformanceCounter minimum resolution: 1/{0} Seconds.",freq.ToString());// In Visual Studio 2005, this line should be changed to: Console::WriteLine("QueryPerformanceCounter minimum resolution: 1/{0} Seconds.",freq.ToString());	Console::WriteLine("100 Increment time: {0} seconds.",((ctr2 - ctr1) * 1.0 / freq).ToString());}else{	DWORD dwError = GetLastError();	Console::WriteLine(S"Error value = {0}",dwError.ToString());// In Visual Studio 2005, this line should be changed to: Console::WriteLine("Error value = {0}",dwError.ToString());}// Make the console window wait.Console::WriteLine();Console::Write("Press ENTER to finish.");Console::Read();return 0;
    Observação você deve adicionar o common language runtime oferecem suporte a compilador opção (/ CLR: oldSyntax) no Visual C++ 2005 a compilar com êxito o exemplo de código anterior. Para adicionar a opção de compilador de suporte de tempo de execução idioma comum no Visual C++ 2005, siga estas etapas:
    1. Clique em Project e clique em <ProjectName> propriedades .

      Observação <ProjectName> é um espaço reservado para o nome do projeto.
    2. Expanda Configuration Properties e, em seguida, clique em Geral .
    3. Clique para selecionar Common Language Runtime suporte, sintaxe antiga (/ CLR: oldSyntax) no projeto oferece suporte a Common Language Runtime configuração no painel à direita, clique em Aplicar e em seguida, clique em OK .
    Para obter mais informações sobre o common language runtime oferece suporte à opção do compilador, visite o seguinte site da Microsoft:
    / clr (Common Language Runtime Compilation)
    http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
  9. Salve o aplicativo. Pressione CTRL + F5 para compilar e executar o aplicativo.

    A janela de console exibe saída é semelhante ao exemplo de código a seguir:
    Start Value: 192244814693193End Value: 192244814694677QueryPerformanceCounter minimum resolution: 1/1263460000 Seconds.100 Increment time: 1.17455241954633E-06 seconds.Press ENTER to finish.
  10. Pressione ENTER para interromper o aplicativo e feche a janela Console.
back to the top

Solução de problemas

Você pode usar das seguintes maneiras para ajudar a resolver problemas quando você estiver solucionando seu código do aplicativo:
  • A chamada da API pode falhar em algumas circunstâncias. Verifique o valor de retorno e, em seguida, ajustar seu código de aplicativo para certificar-se de que você recebe resultados válidos.
  • Para obter melhores resultados, teste o código do aplicativo várias vezes. Quando você testar o código do aplicativo, não Certifique-se nenhum outro aplicativo e não outros processos do servidor são executados. Atividades em outros segmentos e em outros processos podem afetar a porcentagem de tempo que o sistema gasta no aplicativo de destino.
back to the top
Referências
Para obter informações adicionais sobre a função de QueryPerformanceCounter , visite o seguinte site da Web Microsoft Developer Network (MSDN):Para obter informações adicionais sobre a função QueryPerformanceFrequency , visite o seguinte site da MSDN:Para obter informações adicionais sobre a função timeGetTime , visite o seguinte site da MSDN: Para obter informações adicionais sobre a função ObterContagemMarcaEscala , visite o seguinte site da MSDN:back to the top
QueryPerformanceCounter QueryPerformanceFrequency Tempo de desempenho

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 815668 - Última Revisão: 11/14/2007 06:26:28 - Revisão: 3.2

Microsoft Visual C++ 2005 Express Edition, Microsoft Visual C++ .NET 2003 Standard Edition, Microsoft Visual C++ .NET 2002 Standard Edition

  • kbmt kbperformance kbprogramming kbconsole kbcode kbhowtomaster KB815668 KbMtpt
Comentários