Gibt es einen Overhead bei der Verwendung von Lambda-Ausdrücken in C++ 0x (unter VS2010)?
Ich weiß, dass die Verwendung von Funktion Objekte Aufwand verursacht, aber ich beziehe mich auf Ausdrücke, die zum Beispiel an STL-Algorithmen übergeben werden. Optimiert der Compiler den Ausdruck und entfernt so scheinbar einen Funktionsaufruf? Ich fing an, Lambda-Ausdrücke wirklich zu mögen, aber ich bin etwas besorgt über die Geschwindigkeitsstrafe.C++ 0x Lambda-Overhead
Vielen Dank im Voraus!
Warum verwenden Sie wirklich Funktionsobjekte (Funktoren) Overhead? Sie können auch optimiert werden! Die einzige Möglichkeit, dies zu wissen, besteht darin, mit aktivierten vollständigen Optimierungen zu erstellen und dann die Assembly zu betrachten. – EFraim
Wenn ich Funktionsobjekt sagte, bezog ich mich auf etwas wie boost :: function, mein Fehler. Ich weiß, dass klassische Funktionsobjekte inline sein können, und ich wollte wissen, ob dies auch mit Lambda passiert. –
ah ok, die haben etwas Overhead. Aber Lambdas nicht (es sei denn, Sie wickeln sie in ein "std :: function" -Objekt ein (müssen nicht Boost verwenden, da das in den 0x-Standard übernommen wurde) – jalf