begin process at 2012 05 27 21:17:14
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > [VC++6]TIMER HAUTE RÉSOLUTION

[VC++6]TIMER HAUTE RÉSOLUTION


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Niveau :Initié Date de création :05/01/2003 Date de mise à jour :05/01/2003 20:25:02 Vu / téléchargé :6 974 / 300

Auteur : Galett

Ecrire un message privé
Site perso
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

un chtit bout de code pour aider ceux qui cherche un timer très précis. En effet le GetTickCount n'est pas super. Avec ce timer vous pourrez tester des bouts de code qui s'exécutent trop rapidement pour le GetTickCount qui donnent bien souvent 0 ...
voili voilà bonne prog :)
(ds le zip il y a le dsw et dsp en +, pour vous éviter de configurer les settings)

Source

  • //NE PAS OUBLIER :
  • // dans Project | Settings | onglet Général,
  • //choisir "Use MFC in a shared dll"
  • ///////////////////////////////////////////////////
  • #define VC_EXTRALEAN// Exclude rarely-used stuff from Windows headers (+ rapide à recompiler)
  • #include <afx.h> //si dans votre projet vous avez #include "stdAfx.h" alors pas la peine d'ajouter ça
  • #include <winbase.h>//header du compteur haute résolution
  • #include <iostream> //flux cout, etc ...
  • using namespace std;//espace de nom...
  • int main(int argc, char* argv[])
  • {
  • int a=0;
  • cout << "programme de timers" << endl
  • << "--------------------" << endl
  • << endl;
  • bool CHR = false;//Compteur Haute Résolution disponible ?
  • LARGE_INTEGER Compteur1, //un compteur
  • Compteur2, //un compteur
  • freq; //le nombre de "tics" en une seconde(dépends de la machine)
  • if( QueryPerformanceFrequency(&freq) ) //test s'il existe un CHR, si oui enregistre le nbre de "tics" par secondes
  • CHR = true; //TESTER false, si vous souhaitez utiliser GetTickCount
  • if(CHR)
  • cout << "le Compteur Haute R?solution est disponible :)" << endl;//petite phrase pour indication
  • else
  • cout << "le Compteur Haute R?solution n'est pas disponible :(" << endl;
  • if(CHR)
  • QueryPerformanceCounter(&Compteur1);//on relève le temps au compteur, stocké dans Compteur1
  • else
  • Compteur1.QuadPart=GetTickCount(); //au cas ou le CHR ne fonctionne pas
  • //code dont on veut tester le temps de calcul
  • //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  • for(int i = 0; i < 10; ++i) //avec une petite boucle for, le GetTickCount rends 0
  • a +=3; //mais pas le CHR
  • //for(int i = 0; i < 1000000; ++i)//avec une grande boucle, les résultats sont équivalents
  • // a+=3;
  • //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  • //fin du code
  • if(CHR)
  • QueryPerformanceCounter(&Compteur2);//le calcul est fini on relève le compteur :)
  • else
  • Compteur2.QuadPart=GetTickCount(); //idem avec GetTickCount
  • if(CHR)
  • {
  • cout << "temps de calcul en nombre de \"tics\" : ";
  • cout << static_cast <UINT>(Compteur2.QuadPart - Compteur1.QuadPart) << endl;
  • cout << "en secondes : "<< static_cast <float>(Compteur2.QuadPart - Compteur1.QuadPart) / static_cast<float>(freq.QuadPart) << endl;
  • }
  • else
  • {
  • //explications pour getTickCount :
  • //GetTickCount donne le nombre de tic au moment voulue, mais sa fréquence c'est 1000 tics /seconde = 1 milliseconde
  • cout << "temps de calcul en millisecondes : ";
  • cout << static_cast <UINT>(Compteur2.QuadPart - Compteur1.QuadPart) << endl;
  • cout << "en secondes : "<< static_cast <float>(Compteur2.QuadPart - Compteur1.QuadPart) / 1000;
  • }
  • cout << endl << "Presser entr?e ..." << endl;
  • cin.get();
  • return 0;
  • }
//NE PAS OUBLIER :
// dans Project | Settings | onglet Général,
//choisir "Use MFC in a shared dll"
///////////////////////////////////////////////////

#define VC_EXTRALEAN// Exclude rarely-used stuff from Windows headers (+ rapide à recompiler)

#include <afx.h>	//si dans votre projet vous avez #include "stdAfx.h" alors pas la peine d'ajouter ça
#include <winbase.h>//header du compteur haute résolution
#include <iostream>	//flux cout, etc ...
using namespace std;//espace de nom...

int main(int argc, char* argv[])
{
	int a=0;
	cout << "programme de timers" << endl
		<<  "--------------------" << endl
		<< endl;
	
	bool	CHR = false;//Compteur Haute Résolution disponible ?
	LARGE_INTEGER	Compteur1,				//un compteur
					Compteur2,				//un compteur
					freq;					//le nombre de "tics" en une seconde(dépends de la machine)
	
	if(	QueryPerformanceFrequency(&freq) )	//test s'il existe un CHR, si oui enregistre le nbre de "tics" par secondes
		CHR = true;							//TESTER false, si vous souhaitez utiliser GetTickCount

	
	if(CHR)
		cout << "le Compteur Haute R?solution est disponible :)" << endl;//petite phrase pour indication

	else
		cout << "le Compteur Haute R?solution n'est pas disponible :(" << endl;
	
	
	if(CHR)
		QueryPerformanceCounter(&Compteur1);//on relève le temps au compteur, stocké dans Compteur1
	else
		Compteur1.QuadPart=GetTickCount();	//au cas ou le CHR ne fonctionne pas
	
	//code dont on veut tester le temps de calcul
	//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	for(int i = 0; i < 10; ++i)		//avec une petite boucle for, le GetTickCount rends 0
		a +=3;								//mais pas le CHR

	//for(int i = 0; i < 1000000; ++i)//avec une grande boucle, les résultats sont équivalents
	//	a+=3;

	//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	//fin du code


	if(CHR)
		QueryPerformanceCounter(&Compteur2);//le calcul est fini on relève le compteur :)
	else
		Compteur2.QuadPart=GetTickCount();	//idem avec GetTickCount
	

	if(CHR)
	{
		cout << "temps de calcul en nombre de \"tics\" : ";
		cout << static_cast <UINT>(Compteur2.QuadPart - Compteur1.QuadPart) << endl;
		cout << "en secondes : "<< static_cast <float>(Compteur2.QuadPart - Compteur1.QuadPart) / static_cast<float>(freq.QuadPart) << endl;
	}
	else
	{
		//explications pour getTickCount :
		//GetTickCount donne le nombre de tic au moment voulue, mais sa fréquence c'est 1000 tics /seconde = 1 milliseconde
		cout << "temps de calcul en millisecondes : ";
		cout << static_cast <UINT>(Compteur2.QuadPart - Compteur1.QuadPart) << endl;
		cout << "en secondes : "<< static_cast <float>(Compteur2.QuadPart - Compteur1.QuadPart) / 1000;

	}

	cout << endl << "Presser entr?e ..." << endl;
	cin.get();
	
	return 0;
}



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip [WIN32 MFC]CONVERSION DES FICHIERS TXT EN FORMAT LINUX ET WI...
Source avec Zip [C++ WIN]LISTER LES MP3 + LECTURE TAG ID3
Source avec Zip [VC++6]PUISSANCE DU RÉCURSIF TERMINAL
Source avec Zip JEU PROGRAMMÉ EN DIRECT X 8.1
Source avec Zip [VC++6]PROGRAMME DE PAPIERS-PEINTS

 Sources de la même categorie

Source avec Zip Source avec une capture EVAL EXPRESSION COMPLEXE EN 15 LIGNES DE CODE par yann_lo_san
Source avec Zip SCHEDULER RR FIFO par yvesB87
Source avec Zip ALGORITHMES RÉCURSIFS VS ALGORITHMES ITÉRATIFS par yvesB87
Source avec Zip Source avec une capture C++ FORMAT D'IMAGE AVEC QT par pop70
Source avec une capture EXEMPLE DE POINTEURS DE FONCTION par pop70

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales