Code trop lent pour une écriture sur disque
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:
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 !