"a takze kompilator ma wieksze mozliwosci optymalizacji" - co to - to nie. - _13th_Dragon dzisiaj, 15:26
Za kazdym razem jak wspomne o optymalizacji zawsze sie znajdzie ktos, kto stwierdzi ze jest inaczej - normalnie puszka pandory [rotfl]
Kompilator ma tendencje do lepszego inlineowania funkcji szablonowych niz funkcji - chociazby ze wzgledu na to, ze funkcji szablonowej nie mozna umiescic w osobnej jednostce kompilacji (ale nie tylko dlatego). Do tego funktory sa lepiej inlineowane niz wskazniki na funkcje.
Chyba najprostszy mozliwy kod:
#include "stdafx.h"
#include <iostream>
#include <cstdio>
#include <algorithm>
class Pred
{
public:
bool operator()(int a, int b)
{
return a <b;
}
};
bool compare(int a, int b)
{
return a < b;
}
int main(){
int a[3] = {1,2,3};
std::sort(a, a+3, Pred());
std::sort(a, a+3, &compare);
}
Kompilacja:VC++ 2010 Release
W pierwszym przypadku predykat zostaje zinleinowany w drugim compare jest wolana za kazdym razem:
call dword ptr [_Pred]