Heim > Backend-Entwicklung > C++ > Wie kann ich das Schreiben großer Puffer in Binärdateien in C optimieren?

Wie kann ich das Schreiben großer Puffer in Binärdateien in C optimieren?

Patricia Arquette
Freigeben: 2024-12-21 08:18:17
Original
291 Leute haben es durchsucht

How Can I Optimize Writing Large Buffers to Binary Files in C  ?

Große Puffer optimal in C in Binärdateien schreiben

Um große Datenmengen effizient in eine Binärdatei zu schreiben, ist das Vermeiden eine wichtige Überlegung Leistungsengpässe. Herkömmliche Ansätze, die std::fstream in C verwenden, stoßen aufgrund der zugrunde liegenden Dateiverarbeitungsmechanismen häufig auf Einschränkungen.

Lösung unter Verwendung von direktem Datei-I/O mit FILE

Eine überlegene Methode beinhaltet die Verwendung direkter Datei-E/A über das FILE-Objekt. Dieser direkte Ansatz umgeht bestimmte mit dem std::fstream-Objekt verbundene Overheads, was zu deutlich verbesserten Schreibgeschwindigkeiten führt. Durch die direkte Verwendung von fwrite können die Schreibvorgänge effizienter und mit geringerem Verarbeitungsaufwand erfolgen.

Codeoptimierung mit FILE

Der bereitgestellte Code demonstriert diese Optimierung:

#include <stdio.h>
#include <chrono>
#include <vector>

std::vector<uint64_t> GenerateData(std::size_t bytes) {
   // Code for data generation omitted for brevity
}

long long option_2(std::size_t bytes) {
   std::vector<uint64_t> data = GenerateData(bytes);

   auto startTime = std::chrono::high_resolution_clock::now();
   FILE* file = fopen("file.binary", "wb");
   fwrite(&data[0], 1, bytes, file);
   fclose(file);
   auto endTime = std::chrono::high_resolution_clock::now();

   return std::chrono::duration_cast<std::chrono::milliseconds>(endTime - startTime).count();
}
Nach dem Login kopieren

Dieser optimierte Ansatz nutzt die direkte Datei-E/A von FILE, um schnellere Schreibgeschwindigkeiten zu erreichen, insbesondere bei großen Datenmengen Beträge.

Benchmarking und Vergleich

Leistungsvergleiche zwischen der Verwendung von std::fstream und FILE I/O zeigen, dass die direkte Datei-I/O den herkömmlichen Ansatz deutlich übertrifft. Das Schreiben von 4 GB Daten mit FILE I/O dauert beispielsweise etwa 130 Millisekunden, während die Verwendung von std::fstream im Durchschnitt etwa 240 Millisekunden dauert, was die Effizienzgewinne durch direktes I/O demonstriert.

Das obige ist der detaillierte Inhalt vonWie kann ich das Schreiben großer Puffer in Binärdateien in C optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage