LINUX.ORG.RU

История изменений

Исправление 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 подразумевает использование виртуальных функций, что добавляет накладные расходы во время исполнения.