Como usar a função de QueryPerformanceCounter para código de tempo no Visual C++
CV: +A+BKn4a6Scf+3/5.0
306979 .
306978 .
Criar o aplicativo de demonstração e, em seguida, execute o aplicativo de demonstração
Este artigo passo a passo descreve como usar a função QueryPerformanceCounter para código de seu aplicativo de tempo. Quando tempo o código do aplicativo para identificar gargalos de desempenho, você deseja usar o temporizador de resolução mais alto que o sistema tem a oferecer.
No Microsoft Visual C++ .NET 2002, execute essas etapas:
Em Project Types, clique em Projetos do Visual C++.
Modelos, clique em
Aplicativo de C++ gerenciado.
No Visual C++ .NET 2003, execute estas etapas:
Aplicativo de console (.NET).
No Visual C++ 2005, siga estas etapas:
Em Project Types, clique em Visual C++.
Aplicativo de Console CLR.
CodeTimer.
C:\Teste, em seguida, clique em Okey.
No Solution Explorer, clique duas vezes no arquivo CodeTimer.cppna pasta arquivos de código-fonte.
Adicione o seguinte código após o #include "Stdafx. h" linha:
Substitua o código na função tmain com o seguinte código:
__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());
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());
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::Write("Press ENTER to finish.");
Salve o aplicativo. Pressione CTRL + F5 para compilar e executar o aplicativo.
A janela de Console exibe a saída semelhante ao exemplo de código a seguir:
Start Value: 192244814693193
End Value: 192244814694677
QueryPerformanceCounter minimum resolution: 1/1263460000 Seconds.
100 Increment time: 1.17455241954633E-06 seconds.
Pressione ENTER para interromper o aplicativo e feche a janela do Console.
Você pode usar as seguintes maneiras para ajudá-lo a resolver problemas quando você estiver solucionando problemas de código de seu aplicativo:
A chamada da API pode falhar em algumas circunstâncias. Verificar o valor de retorno e, em seguida, ajustar o código do seu aplicativo para certificar-se de que você recebe resultados válidos.
Para obter melhores resultados, teste o código do aplicativo diversas vezes. Quando você testar o código do aplicativo, verifique se que nenhum outro aplicativo e não há outros processos do servidor estão em execução. Atividades em outros segmentos e em outros processos podem afetar o percentual de tempo que o sistema gasta no aplicativo de destino.
Para obter informações adicionais sobre a função de QueryPerformanceCounter , visite o seguinte site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms886788.aspx
Para obter informações adicionais sobre a função de QueryPerformanceFrequency com o propósito , visite o seguinte site da MSDN:
http://msdn2.microsoft.com/en-us/library/ms886789.aspx
Para obter informações adicionais sobre a função timeGetTime , visite o seguinte site da MSDN:
http://msdn2.microsoft.com/en-us/library/ms713418.aspx
Para obter informações adicionais sobre a função ObterContagemMarcaEscala , visite o seguinte site da MSDN: