Écrire efficacement des tampons volumineux dans des fichiers binaires en C
Écrire des quantités importantes de données dans un fichier binaire peut s'avérer difficile, en particulier lorsque l'on recherche des quantités élevées de données. performance. Cet article étudie les techniques permettant d'accélérer ce processus en C.
Gloutons d'étranglement des performances
L'approche initiale, utilisant std::fstream, n'a atteint que 20 Mo/s. Cette disparité avec les vitesses de copie de fichiers considérablement plus rapides sur le même SSD suggère des optimisations potentielles.
SOLUTION A : Passer à la gestion des fichiers de style C
L'utilisation de C- la gestion des fichiers de style (FILE*) a considérablement amélioré les performances, atteignant des vitesses d'environ 220 Mo/s. Cette méthode contournait les couches intermédiaires et interagissait directement avec le système de fichiers du système d'exploitation, réduisant ainsi la surcharge.
SOLUTION B : Désactivation de la synchronisation des flux
Désactivation de la synchronisation des flux avec std::ios_base ::sync_with_stdio(false) a sensiblement amélioré les performances de l'approche std::fstream. Cette modification a éliminé les opérations inutiles qui entravaient l'écriture des données.
Options de comparaison
Des tests récents révèlent que std::fstream (avec la synchronisation du flux désactivée) et le fichier de style C la manipulation peut effectivement maximiser la vitesse d’écriture d’un SSD. Cependant, std::fstream fournit une API plus simple et plus moderne, tandis que la gestion des fichiers de style C offre des performances légèrement meilleures dans certains scénarios.
CONCLUSION
Pour écrire des fichiers volumineux tampons vers les fichiers binaires, les stratégies suivantes sont recommandées :
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!