Betrachten Sie diese minimale Implementierung einer festen vector<int>
:
Gegeben folgender Testfall:
%Vor%Der Compiler erzeugt nicht-vektorisierte Assembly: Live-Beispiel auf godbolt.org
Wenn ich any der folgenden Änderungen mache ...
values[size()]
- & gt; values[_size]
Fügen Sie __attribute__((always_inline))
zu size()
... dann erzeugt der Compiler eine vektorisierte Assembly: Live-Beispiel auf godbolt.org
Ist das ein gcc-Fehler? Oder gibt es einen Grund, warum ein einfacher Accessor wie size()
die automatische Vektorisierung verhindert, wenn always_inline
nicht explizit hinzugefügt wird?
Tags und Links optimization c++ gcc performance auto-vectorization