Memorytest

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 448 fois - Téléchargée 35 fois

Contenu du snippet

MemoryTest : teste la mémoire vive

Teste las performances en écriture de la mémoire vive pour les types de variables char, short et long. Je fut assez surpris d'avoir des résultats si différants selon le type de variable.
Le test dure généralement moins d'une minute, il semble y avoir une marge d'erreur de 5% environ.
Ce programme a été programmé avec Dev-c++ pour Windows mais je pense qu'il est facile a porter vers d'autres compilateurs/systèmes d'exploitation.

Source / Exemple :


/*********************************************************
 Nom : MemoryTest
 Description : Teste la mémoire vive RAM
 Licence : GPL
 Auteur : Raphaël MELIOR (RaphAstronome)
 Date : 12 oct. 2004

                                                                                                                  • /
#include <iostream> #include <stdlib.h> #define DWORD unsigned long #include <Windows.h> using namespace std; int main(int argc, char *argv[]) { // Variables de fonctionnement int ready=0, centmega=100*1024*1024; DWORD temps_debut, temps_execution; // Variables d'essais long* variabletestlong; short* variabletestshort; char* variabletestchar; // Un petit message cout << "Test de la vitesse de la memoire ram (100 Mo)." << endl; cout << "Vous DEVEZ avoir au minimum 256 Mo pour executer ce test sinon ca swapera." << endl; cout << "Code sous licence GNU."; cout << endl; cout << "Lancer le test ? 1:oui 2:non" << endl; cin >> ready; if (ready == 1) { // Test de variable de type long variabletestlong = new long[centmega/4]; // Initialise le tableau temps_debut = GetTickCount(); // Note le moment du départ cout << "Test long "; for (int i=1; i<=15; i++) { // On fait 15 passes cout << "."; for (int j=0; j<centmega/4; j++) variabletestlong[j] = j; // On met des tas de trucs en mémoire } temps_execution = GetTickCount() - temps_debut; // On calcule de temps passé cout << " " << (temps_execution/1000.0f) << "s, "; // On l'affiche cout << (15.0f/(temps_execution/100000.0f)) << "Mo/s" << endl;// On calcule la vitesse delete variabletestlong; // On n'oublie pas de supprimer la var ;D // Test de variable de type short variabletestshort = new short[centmega/2]; // Initialise le tableau temps_debut = GetTickCount(); // Note le moment du départ cout << "Test short "; for (int i=1; i<=15; i++) { // On fait 15 passes cout << "."; for (int j=0; j<centmega/2; j++) variabletestshort[j] = j; // On met des tas de trucs en mémoire } temps_execution = GetTickCount() - temps_debut; // On calcule de temps passé cout << " " << (temps_execution/1000.0f) << "s, "; // On l'affiche cout << (15.0f/(temps_execution/100000.0f)) << "Mo/s" << endl;// On calcule la vitesse delete variabletestshort; // On n'oublie pas de supprimer la var ;D // Test de variable de type char variabletestchar = new char[centmega]; // Initialise le tableau temps_debut = GetTickCount(); // Note le moment du départ cout << "Test char "; for (int i=1; i<=15; i++) { // On fait 15 passes cout << "."; for (int j=0; j<centmega; j++) variabletestchar[j] = j; // On met des tas de trucs en mémoire } temps_execution = GetTickCount() - temps_debut; // On calcule de temps passé cout << " " << (temps_execution/1000.0f) << "s, "; // On l'affiche cout << (15.0f/(temps_execution/100000.0f)) << "Mo/s" << endl;// On calcule la vitesse delete variabletestchar; // On n'oublie pas de supprimer la var ;D system("PAUSE"); } return 0; }

Conclusion :


Veuillez donner les résultats de vos tests, pour moi :
Long : 149.775Mo/s
Short : 98.4123Mo/s
Char : 63.4679Mo/s
Sur un Athlon 1GHz, 256 Mo de RAM @ 133 MHz sur carte-mere ASUS A7V-133
Ajouter un commentaire Commentaires
Messages postés
230
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2008

C'est ce que je dis : vive la portabilité ;-)
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

GetTickCount ne fait pas partie de la STL, c'est une méthode Win32, et DWORD est un type bien à l'API Win32.
Messages postés
104
Date d'inscription
samedi 7 décembre 2002
Statut
Membre
Dernière intervention
17 août 2009

oups ...
#define DWORD unsigned long

je devais être fatigué le jour ou j'ai écrit ça !
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
#define DWORD double !!!
c'etait vraiment abuse, DWORD voulant dire 32 bits.
Messages postés
230
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2008

Trouvé une solution qui marche pour moi : #include <Windows.h> sans le #define DWORD double et là ça compile
Afficher les 25 commentaires

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.