Hat jemand darüber nachgedacht, wie man einen Speichermanager (in C++) schreibt, der komplett branchfrei ist? Ich habe einen Pool, einen Stack, eine Warteschlange und eine verkettete Liste (Zuweisung aus dem Pool) geschrieben, aber ich frage mich, wie plausibel es ist, einen Zweig-freien General-Speicher-Manager zu schreiben.Branchless Speichermanager?
Dies ist alles, was dazu beiträgt, ein wirklich wiederverwendbares Framework für eine solide, gleichzeitige, in-order-CPU- und Cache-freundliche Entwicklung zu schaffen.
Edit: von Branchless ich meine, ohne direkte oder indirekte Funktionsaufrufe und ohne Wenns zu tun. Ich habe gedacht, dass ich wahrscheinlich etwas implementieren kann, das zuerst die angeforderte Größe für falsche Anrufe auf Null ändert, aber nicht wirklich viel mehr als das hat. Ich fühle, dass es nicht unmöglich ist, aber der andere Aspekt dieser Übung ist dann profilieren es auf besagten "unfreundlichen" Prozessoren, um zu sehen, ob es sich lohnt, so hart zu versuchen, um Verzweigungen zu vermeiden.
Was meinst du mit einem "Zweig"? –
@Neil, nehme ich an, es ist etwas, das Kontrollfluss teilt ('if' zum Beispiel). –
Wenn Verzweigung bedeutet "wenn", dann ist die Antwort einfach nein. @OP: Könnten Sie bitte klarstellen, ob Sie das wirklich meinen? –