2016-05-24 2 views
1

Ich habe eine C++ - Anwendung auf Linux, die einige Daten auf eine SSD schreibt. Die Anwendung schreibt mit ~ 100 MByte pro Sekunde.Wenn SSD verwendet wird, ist es besser, einen Thread zu verwenden, um 20 verschiedene Dateien anstelle von 20 Threads zu schreiben?

Jede Sekunde schreibt die Anwendung 20 neue Dateien auf die Festplatte. Zusätzliche Threads der Anwendung führen neben diesen 20 Threads eine andere Logik und Wartung durch.

Momentan verwendet meine Anwendung mehrere Threads, um mehrere Dateien gleichzeitig zu schreiben und eine Datei pro Thread zu schreiben.

Es ist besser, das Design des Codes zu ändern und einen Thread alle 20 neuen Dateien pro Sekunde schreiben zu lassen?

+5

Warum nicht versuchen, messen sie, und herausfinden? Wie bei jeder Optimierungsfrage hängen Ihre Ergebnisse vom System, dem Verhalten Ihrer Anwendung und einer beliebigen Anzahl anderer Faktoren ab. Das heißt, mehrere Threads könnten die parallele Erstellung von Daten ermöglichen; Jeder Thread wird bei der Ausgabeoperation blockiert, aber das stoppt nicht die anderen Threads, die ausgeführt werden, um ihre eigenen Schreibvorgänge vorzubereiten. Die Synchronisierung zwischen Threads wirkt sich auf die Leistung aus, ebenso wie der E/A-Scheduler und die Art der Schreibvorgänge. Es ist normalerweise besser, einen einzelnen großen Block vorzubereiten und vom Betriebssystem in eine einzige Datei schreiben zu lassen. – Andrew

Antwort

0

Es hängt von Ihrem OS

Aber würde eher vorschlagen maximal 4 -8 Gewinde als die Thread-Verwaltung des OS die meiste Zeit verwenden slowers das Programm, wenn zu viel Threads parallel ausgeführt werden

versuchen Sie ein bisschen weniger Threads mit mehr Aufgaben für jeden von ihnen zu tun zu verwenden;)

Das beste, was Sie noch tun können, ist die Gesamtausführungszeit des Programms messen

Verwandte Themen