История изменений
Исправление ksv, (текущая версия) :
Вот несколько поновее: https://stackoverflow.com/questions/25985248/speed-of-bound-lambda-via-stdfun...
Вы, конечно, опять можете возразить что ответы 2015 года, столько воды утекло, компиляторы уже в десять раз умнее, проблем нет. Советую провести замеры самостоятельно - благо все коды привидены.
Хочу отметить только что std::function стирает всю информацию о вызываемом объекте. Соответственно, у компилятора отсутствует возможность заинлайнить вызов, провести оптимизации. При использовании метода с шаблонами компилятор очень часто может провести существенные оптимизации.
Ну и обычно реализация std::function подразумевает использование виртуальных функций, что добавляет накладные расходы во время исполнения.
Исходная версия ksv, :
Вот несколько поновее: https://stackoverflow.com/questions/25985248/speed-of-bound-lambda-via-stdfun...
Вы, конечно, опять можете возразить что ответы 2015 года, столько воды утекло, компиляторы уже в десять раз умнее, проблем нет. Советую провести замеры самостоятельно - благо все коды показаны.
Хочу отметить только что std::function стирает всю информацию о вызываемом объекте. Соответственно, у компилятора отсутствует возможность заинлайнить вызов, провести оптимизации. При использовании метода с шаблонами компилятор очень часто может провести существенные оптимизации.
Ну и обычно реализация std::function подразумевает использование виртуальных функций, что добавляет накладные расходы во время исполнения.