2017-12-15 5 views
-3

Ich schreibe ein MFC-GUI-Programm, das Diagramme in Echtzeit zeichnet, wenn es neue Daten empfängt. Es kommt 30 Daten pro Sekunde. Ich füge eine neue Funktion hinzu, wo ich eine Textdatei unter Verwendung und fprint jedes Mal schreibe, wenn es neue Daten erhält. Es erstellt 30 neue Textdateien pro Sekunde.Wie verbessert man MFC fprint Schreibleistung?

Aufgrund der Schreibfunktion besteht das Problem darin, dass das Programm pausiert und die Grafiken nicht in Echtzeit aktualisiert. Wenn ich die Schreibfunktion ausschalte, funktioniert es gut.

Wie kann ich das Problem lösen?

Ich schätze Ihre Hilfe im Voraus. Vielen Dank!

+1

Warum erstellen Sie 30 neue Textdateien pro Sekunde? Sie werden mit Tausenden von Dateien enden. Bist du sicher, dass du das willst? Wie groß ist die ungefähre Länge jedes dieser Texte? Warum nicht eine neue Datei nur jede Minute oder so erstellen? Bitte formulieren Sie Ihre Frage und erzählen Sie uns mehr über dieses Programm. –

+0

Keiner Ihrer Tags ist relevant. Bitte [bearbeiten] (https://stackoverflow.com/posts/47826815/edit) Ihre Frage entsprechend. – IInspectable

+0

Wenn für jeden Datenpunkt (30 mal pro Sekunde) ein Open, Write (Append?), Close, dann wird es definitiv LANGSAM sein. Cache deine Daten im RAM, dann dump es am Ende? Wenn es zu viele Daten sind, führen Sie möglicherweise Multithread durch und behalten Sie Ihren UI-Thread schnell, und lassen Sie den anderen Thread (niedrigere Priorität) die Daten in die Datei (en) ablegen, BEHALTEN Sie die Datei (en) geöffnet. – franji1

Antwort

0

Das Beschreiben eines Laufwerks ist aufgrund des Betriebssystems/der Hardware eher langsam. Früher gab es dieses Ding namens RAMDISK. Im Grunde ein Gerätetreiber, der einen Laufwerksbuchstaben in Ram erstellt hat. Nachdem die Dateien geschrieben wurden, können sie auf eine neue Festplatte oder einen SSD-Speicherort kopiert werden. Das Öffnen und Schließen von Dateien beansprucht Betriebssystemressourcen. Es ist schwer zu wissen, Ihre Programme Design aus Ihrer Beschreibung ...