Czy można/wykonuje funkcje wbudowanej kompilacji lambda, aby zwiększyć wydajność, tak jak w przypadku prostych standardowych funkcji?Czy lambdas jest wbudowane jak funkcje w C++?
np.
std::vector<double> vd;
std::for_each(vd.begin(), vd.end(), [](const double d) {return d*d;});
Czy występuje utrata wydajności spowodowana brakiem optymalizacji?
Drugie pytanie: gdzie mogę sprawdzić, czy używany kompilator ma zoptymalizowane wywołania funkcji wbudowanych, które są wysyłane do algorytmu? Mam na myśli to, że jeśli funkcja - nie obiekt funkcji - jest wysyłana do algorytmu, ostatnia dostaje wskaźnik do funkcji, a niektóre kompilatory optymalizują wskaźniki do funkcji inline, a inne nie.
Niektóre są zoptymalizowane, inne nie są, tak jak inne wywołania funkcji. Jeśli jesteś zainteresowany konkretnym połączeniem, musisz sprawdzić, co konkretny kompilator robi z tym konkretnym połączeniem. –
Tu mylą się pojęcia. Wszystkie lambdy są inline. Nie wszystkie połączenia z nimi są konieczne. –
Nie sądzę, aby lambda mogła być wstawiona, jeśli jest przekazywana do funkcji zewnętrznej. – nobar