При включенной оптимизации будет намного меньше, под gcc с O3, полагаю что под MS компилятором также.
А да к вопросу что происходит: Так как у вас нет move конструктора то ваш объект копируется на каждой операции что возникает в конструкторе std::thread
Первое копирование происходит уже на вызове конструктора,
затем внутри std::thread копирует ваш объект в некоторое подобие std::function использую что то вроде std::bind конструкторы которых тоже на каждом шаге копируют ваш объект
Оптимизаторы обычно сокращают такие копирования до 1го двух, и да на современных процессорах для кучи задач не критично в плане скорости передаете вы указатель на объект или просто копируете его