Hey,
schön, dass euch die Videos gefallen.
Dabei ist alles noch in einem sehr frühen Stadium.
Die grundlegenden Funktionen der Engine wollen solide implementiert sein!
Designentscheidungen treffe ich oft aufgrund von Benchmarking. Datenorientierung hat Objektorientierung abgelöst. Das alles braucht seine Zeit.
Die Grafik ist noch im Rohzustand.
Bzgl. volatile und Umordnung durch den Compiler könnte es bei mir womöglich hässliche Fehler geben, wenn ich nicht den Visual C++ Compiler nehme. Da gucke ich mal mit mehr atomics. Das war mir neu. :idea:
Es geht ja um die "Effiziente Synchronisation von Threads"
Eine weitere Erfahrung, bzw eine weitere Methode, welche soeben die Effizienz der Synchonisation steigert.
Verglichen habe ich die auf eine Sekunde gemittelte Maximale Update-Frequenz in der Zielanwendung.
Die Threads (Ich lasse es mit 2 Threads pro Core laufen) holen sich jeweils ein Paket von Items ab, welches sie dann abarbeiten.
Die Größe der Pakete ist nun Flexibel. Erst große Pakete, zum Ende kleinere. Vorher war die Größe statisch.
Ich will so erreichen, dass alle Threads möglichst gleichzeitig fertig sind und wenig Brüche in der Cache-Line auftreten.
Und es funktioniert. Eine kleine Funktion mehr, welche die Leistung um ~3% anschiebt. Für den geringen Aufwand ganz nett.
Effiziente Synchronisation von Threads
Re: Effiziente Synchronisation von Threads
Videos von meinem Projekt: https://www.youtube.com/watch?v=AKKoZFE ... eB&index=1
- Aramis
- Moderator
- Beiträge: 1458
- Registriert: 25.02.2009, 19:50
- Echter Name: Alexander Gessler
- Wohnort: 2016
- Kontaktdaten:
Re: Effiziente Synchronisation von Threads
Du hast natuerlich recht, ich hab es verwechselt. Demzufolge funktioniert es mit VC standardmaessig auf allen Plattformen ausser ARM.Ich sehe gerade nicht, dass das allen Compilern vorgeschrieben wäre.
- dot
- Establishment
- Beiträge: 1745
- Registriert: 06.03.2004, 18:10
- Echter Name: Michael Kenzel
- Kontaktdaten:
Re: Effiziente Synchronisation von Threads
Es funktioniert mit VC auf x86, es ist aber dennoch falsches C++.
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Effiziente Synchronisation von Threads
Ist es nicht eher undefiniertes und nicht portables C++?
90 % der WinAPI ist in C++ undefiniert (flacher Adressraum, Zweierkomplement, blabla), aber deswegen ist das C++ nicht „falsch“.
Nirgendwo steht, dass das Programm ill-formed wäre, weil es aus der Variable liest.
90 % der WinAPI ist in C++ undefiniert (flacher Adressraum, Zweierkomplement, blabla), aber deswegen ist das C++ nicht „falsch“.
Nirgendwo steht, dass das Programm ill-formed wäre, weil es aus der Variable liest.
- dot
- Establishment
- Beiträge: 1745
- Registriert: 06.03.2004, 18:10
- Echter Name: Michael Kenzel
- Kontaktdaten:
Re: Effiziente Synchronisation von Threads
Ja gut, es ist undefiniert. Ich würde jedenfalls Abstand von Code nehmen, der nur mit einem ganz konkreten Compiler eines gewissen Herstellers und selbst dann nur auf einer ganz bestimmten Architektur funktioniert, wenn ich das selbe auch mit Standard C++ erreichen könnte...