Но теперь у меня встает вопрос, а какой оверхед у функторов т.к. я ими видимо никогда не пользовался =)
Если делать функтору равный функционал, что и у функции, то разницы по оверхеду нет. Если увеличивать функционал (хранение функутора, хранение доп данных в функуторе), то оверхед будет на этот функционал.
С лямбдой то же самое. Если делать в ней захват контекста, то будет оверхед (но в функцию ты не можешь сделать захват контекста, поэтому это сравнение некорректно)