Visual Studio C++ - Unroll loops
-
bezüglich Optimierung:
kennt jemand ne option bei visual studio c++ damit ich meine schleifen ausrollen kann sofern die max count size bekannt ist ???
bei gcc geht das mit -funroll-loops... wie gehts bei VS??
oder ist bei -O2 unroll mit drinne?
über hilfe würde ich mich sehr freuen
gruß alfred
-
Jo, das ist da schon mit drinnen. Ob man diese Optimierung nochmal extra konfigurieren kann, weiß ich nicht.
-
Optimizer schrieb:
Jo, das ist da schon mit drinnen.
Heißt das, ich muss gar nicht mehr Duff's Device benutzen?
-
Dieser Thread wurde von Moderator/in Nobuo T aus dem Forum ANSI C in das Forum MFC (Visual C++) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Optimizer schrieb:
Jo, das ist da schon mit drinnen. Ob man diese Optimierung nochmal extra konfigurieren kann, weiß ich nicht.
hm ok kann das noch jemand bestätigen? wie gesagt bei gcc kann man es explizit angeben und im vergleich läuft mein prog kompilliert mit gcc auch schneller als mit VS, deswegen hege ich noch gewisse zweifel
duffyduck schrieb:
Optimizer schrieb:
Jo, das ist da schon mit drinnen.
Heißt das, ich muss gar nicht mehr Duff's Device benutzen?
was sind Duff's Devices?
-
http://en.wikipedia.org/wiki/Duff's_device
und ja, der VC++ Compiler kann loop unrolling. Warum interessiert dich diese eine optimierung so? aktuell wäre bei engen loops open mp deutlich effektiver (wenn man es denn verwenden kann).
-
Shade Of Mine schrieb:
http://en.wikipedia.org/wiki/Duff's_device
und ja, der VC++ Compiler kann loop unrolling. Warum interessiert dich diese eine optimierung so? aktuell wäre bei engen loops open mp deutlich effektiver (wenn man es denn verwenden kann).
weil ich etwas optimieren will und unrolling bestens dafür geeignet wäre wie mir der gcc bewiesen hat. Könntest du vielleicht genauer erklären wie ich es aktiviere? openMp will ich nicht sondern einfach nen unroll loops machen
naja zumindest weiss ich ja jetzt schon das es geht^^ wäre schön wenn man auch dazu schreibt wie?
-
MSVC hat keine spezielle "unroll" Option. Was du versuchen könntest sind folgende Einstellungen unter "Optimizations":
Optimization: Enabled
Inline Function Expansion: Any Suitable
Enable Intrinsic Functions: No
Favor Size Or Speed: Favor Fast Code
Omit Frame Pointes: Yes
Enable Fiber-safe Optimizations: No
Whole Program Optimization: Enable link-time code generationWenn das auch nix hilft kannst du noch die Profile-Guided-Optimization versuchen.
Und wenn auch das nix bringt ... schätze ich wird MSVC es einfach nicht machen, weil er es an der Stelle nicht für sinnvoll hält (womit er natürlich unrecht haben kann).
Ansonsten... könnte es nicht sein dass es andere Gründe hat dass das MSVC Programm langsamer ist?
-
VC++ kann Schleifen ausrollen:
http://www.bokebb.com/dev/english/1960/posts/196058387.shtml
-
Sasquash schrieb:
VC++ kann Schleifen ausrollen:
http://www.bokebb.com/dev/english/1960/posts/196058387.shtmlDas wurde schon mehrfach gesagt und ist jetzt jedem klar denke ich.
Der Artikel ist trotzdem interessant, bestätigt nochmal was ich schon gesagt habe: VC hat keine spezielle "unroll loops" Option.