Bonjour. J'ai voulu faire une sorte de stress test très basique pour mon disque dur, en lui écrivant des données aléatoires en continu, et ça a donné ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main(void)	{
 
	srand((unsigned int)time(NULL)); 
	unsigned char n = RAND(1,255); // Création d'un nombre aléatoire
	FILE *fs = NULL;
	fs = fopen("test1.bin", "wb"); // Ouverture du fichier
	time_t initial = clock();
	time_t actual = 0;
 
	while (actual / CLOCKS_PER_SEC < 120)	{
		fwrite(&n, 1, 1, fs);	// Ecriture
		__asm	ror n, 3;		// Rotation
		actual = clock() - initial;
	}	// Tant que 120 secondes ne sont pas écoulées, continuer
 
	fclose(fs);
	system("pause");
 
	return 0;
}
Le problème, c'est que c'est mon processeur qui se fatigue avant mon HDD (utilisation proc 25%, et c'est un quad core, utilisation HDD 10% pour un 7200 rpm).
Et ce n'est pas dû à la rotation de l'octet, où au fait de gérer le timer, mais de fwrite qui est trop lent.

Donc ce que j'aimerais savoir, c'est comment faire pour que l'écriture soit bien plus rapide ? Hormis utiliser les threads parce que il faudra que je lance ce programme sur un ssd donc bon...

Merci d'avance !