1/5 (8 avis)
Vue 4 067 fois - Téléchargée 402 fois
#include <windows.h> #include "resource.h" #include "bnPrecis.h" DWORD res; char szbuff[24]; DWORD __stdcall PerdreTemps(DWORD init, DWORD count) { double d = 0.5; while(count) { init += count; d += (((double) d) / 3.5); count--; } return (init + (DWORD) d); } BOOL CALLBACK AppDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam) { switch(mssg) { case WM_INITDIALOG: SetClassLong(hdlg, GCL_HICON, (long)LoadIcon(0, (LPCTSTR)IDI_APPLICATION)); // affichage de la vitesse CPU SetDlgItemInt(hdlg, IDST_SPEEDPROC, bnCpuSpeedMghz(), 0); return 1; case WM_COMMAND: switch(wParam) { case IDBT_TICKS: bnTicksStart(); // INITIALISATION DES TICKS PROCESSEUR res = PerdreTemps(8, 0xFFFF); // proc a mesurer en ticks // recuperation des TICKS UTILISES par PerdreTemps() _ui64toa(bnTicksResult(), szbuff, 10); SetDlgItemText(hdlg, IDST_TICKS, szbuff); return 0; case IDBT_MILLI: bnMilliscndStart(); // INITIALISATION DES MILLISECONDES res = PerdreTemps(8, 0xFFFF); // proc a mesurer en millisecondes // recuperation des MILLISECONDES UTILISEES par PerdreTemps() _ui64toa(bnMilliscndResult(), szbuff, 10); SetDlgItemText(hdlg, IDST_MILLI, szbuff); return 0; case IDCANCEL: EndDialog(hdlg, 0); } } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int) { // TEST qui suit est FORTEMENT RECOMMANDE !!! // DLL dira si timer haute resolution est disponible // NE PAS FAIRE DE MESURES si bnPrecisionOK() retourne ZERO, sinon crash !!! if(bnPrecisionOK()) DialogBoxParam(hInstance, (LPCTSTR)IDD_APP, 0, AppDlgProc, 0); return 0; }
16 févr. 2007 à 10:57
que tu postes chaque source sur chacun des sites CS (Asm et Cpp, quoi ^^) selon leur langage, ou que tu regroupe tout dans le même zip, certains trouvent toujours a redire...
++
16 févr. 2007 à 10:30
Faut-il aussi supprimer les sources qui utilisent DirectX, OpenGL, Sdl, etc etc au prétexte qu'on en a pas les sources ?
Je suppose donc que tu n'as jamais employé sprintf() ni aucune lib dont on n'a pas les sources avec le compilo.
16 févr. 2007 à 01:33
Réellement, pour mesurer le temps de façon précise, il y a des APIs Windows officielles qui permettent d'accéder de façon portable aux "compteurs de précision" supportés par Windows et mis à sa disposition par le pilote spécifique du processeur installé, ou par d'autres périphériques externes pouvant fournir des horloges encore plus précises.
Si on veut passer outre Windows et ses pilotes de processeur, il faut écrire du code assembleur qui va détecter le type de processeur et lire les registres de compteurs de temps de précision, ou à défaut, qui va effectuer une mesure empirique de boucle basée sur des profils de processeurs connus (mais rien ne dit que la mesure empirique obtenue fonctionnera sur toutes les générations de processeurs).
Ce code, de plus, est incapable d'estimer la précision de la mesure puisque, a priori, il tourne en tant que thread d'un processus, et que la mesure va être influencée par les processus et threads concurrents et l'activité générale du système. Pour que la mesure soit fiable, il faut mesurer des indicateurs de qualité, notamment avec plusieurs mesures non correllées et le calcul d'un écart type suffisant pour estimer la précision. C'est comme pour un sondage: il faut une population minimale dans l'échantillon de mesures pour estimer la précision du pourcentage de votes!
Bref, ce code est totalement à éviter, car il n'est pas possible d'en mesurer la sécurité, ni la fiabilité, ni la compatibilité.
16 févr. 2007 à 01:22
Ce n'est en effet pas du tout un code source mais juste un exemple d'utilisation (très basique car la partie sourcée ne contient rien au sujet de la mesure que ce programme est sensé faire, mais juste un squelette vide très générique similaire à une appli HELLO World de base) d'une librairie propriétaire (bnPrecis.lib avec bnPrecis.h) sans aucun source.
STRONG DELETE NOW. Ca n'a rien à faire ici!!!
5 avril 2006 à 00:04
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.