Registriert: Di Mai 18, 2004 16:45 Beiträge: 2620 Wohnort: Berlin
Programmiersprache: Go, C/C++
Dateianhang:
release.jpg [ 90.58 KiB | 32387-mal betrachtet ]
Beim überfliegen hätte ich folgende Optimierungsvorschläge. Mutex für die Queue entfernen und zu einer lock-free-queue machen, dass erhöht den Durchsatz bei oversubscription und ist generell schneller. Hier mal meine Multiple Producer-Single Consumer implementierung. Header Source Erstelle für jeden Thread eine eigene Queue, die Page größe aligned ist(default 4096). Damit sorgst du dafür, dass der Kern, auf dem der Thread läuft, nicht beim einfügen und entfernen sich mit anderen Kernen synchronisieren muss, da sie auf den gleichen Speicherblock arbeiten. Beim Benchmark empfehle ich dir den ersten Frame zu ignorieren und ein 51. hinzu zu fügen, um Cold-Cache Proleme aus zu klammern.
Zum Code kann ich sagen, einfach zu lesen
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.