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
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.