Einführung:
Das effiziente Schreiben großer Puffer in Binärdateien ist möglich oft entscheidend für leistungsempfindliche Anwendungen. In diesem Artikel gehen wir der Frage nach, wie dieser Prozess in C optimiert werden kann.
Anfangsansatz und Engpässe:
Der bereitgestellte Code scheint im Vergleich zur Datei unterdurchschnittlich zu sein Kopiervorgänge. Zu den möglichen Engpässen gehören:
Optimierte Lösung:
Ein wesentlich schnellerer Ansatz ist die Verwendung von FILE* und 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; }
Dieser Code erreichte Schreibgeschwindigkeiten von etwa 220 MB/s und näherte sich damit den Grenzen der SSD.
Weitere Verfeinerungen:
Um die Codeeffizienz weiter zu verbessern, können wir Folgendes implementieren:
Benchmarking und Ergebnisse:
Benchmarking des Codes auf verschiedenen Plattformen (Laptop und Desktop) mit unterschiedlichen Puffergrößen (1 MB–4 GB) ergab:
Schlussfolgerung:
Zusammenfassend lässt sich sagen, dass zum effizienten Schreiben großer Puffer in Binärdateien in C Folgendes berücksichtigt werden muss:
Das obige ist der detaillierte Inhalt vonWie kann ich die Schreibgeschwindigkeit von Binärdateien in C maximieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!