Introduction :
L'écriture efficace de grands tampons dans des fichiers binaires est souvent crucial pour les applications sensibles aux performances. Dans cet article, nous explorerons la question de savoir comment optimiser ce processus en C.
Approche initiale et goulots d'étranglement :
Le code fourni semble sous-performant par rapport au fichier opérations de copie. Les goulots d'étranglement potentiels incluent :
Solution optimisée :
Une approche beaucoup plus rapide consiste à utiliser FILE* et fwrite :
#include <stdio.h> const unsigned long long size = 8ULL*1024ULL*1024ULL; unsigned long long a[size]; int main() { FILE* pFile; pFile = fopen("file.binary", "wb"); for (unsigned long long j = 0; j < 1024; ++j) { // Data generation fwrite(a, 1, size*sizeof(unsigned long long), pFile); } fclose(pFile); return 0; }
Ce code a atteint des vitesses d'écriture d'environ 220 Mo/s, se rapprochant des limites du SSD.
Autres raffinements :
Pour améliorer davantage l'efficacité du code, nous pouvons implémenter les éléments suivants :
Benchmarking et Résultats :
L'analyse comparative du code sur différentes plates-formes (ordinateurs portables et de bureau) avec différentes tailles de tampon (1 Mo à 4 Go) a révélé :
Conclusion :
En résumé, pour écrire efficacement des tampons volumineux dans des fichiers binaires en C, considérez :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!