Elemar DEV

Tecnologia e desenvolvimento

Determinando “tempo de execução” em C++

Olá. Tudo certo?!

Determinar tempo de execução, em qualquer linguagem de programação, é uma atividade importante.

Em C++, costumo confiar no sistema operacional para determinar tempo de execução. Recentemente, encontrei o seguinte template no MSDN que achei bastante interessante:

template <typename TFunction>
__int64 time_call(TFunction&& function)
{
	__int64 begin = GetTickCount();
	function();
	return GetTickCount() - begin;
}

Gostei bastante da ideia por isolar a complexidade dentro de uma única função.

Veja exemplo de aplicação:

int main()
{
	int fibonacci40;
	__int64 elapsed = time_call([&]()
	{
		fibonacci40 = fibonacci(40);
	});

	cout 
		<< "Fibonacci(30) = " << fibonacci40 
		<< " computed in " << elapsed << " ms."
		<< endl;

	return 0;
}

Entendido?!

2 comentários em “Determinando “tempo de execução” em C++

  1. evangilo
    09/03/2013

    Parabéns pelo trabalho que você vem fazendo. Estou iniciando no mundo da programação agora, e os seus post ja me ajudaram bastante, aprendi coisas que nunca tinha ouvido falar. Vlw

  2. Daniel Gadens
    11/03/2013

    Eu prefiro usar o QueryPerformanceCounter com QueryPerformanceFrequency, que é mais mais precisos que o GetTickCount() que tem uma precisão de 10 a 16 milliseconds. Ou seja se alguma operação demorar menos do que 10ms ele vai te mostrar zero o que é um problema em alguns casos.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Informação

Publicado às 09/03/2013 por em Post e marcado .

Estatísticas

  • 671,029 hits
%d blogueiros gostam disto: