Во сколько обходится вызов виртуального метода? Я так понял, это работает как то так, обращаемся к базовому классу и указываем метод на вызов, внутри есть указатель на vtable, который хранит информацию о типе наследника и через этот указатель находит функцию наследника, которая перегружена и вызывает, верно?
Вместо одного прямого вызова осадков один косвенный вызов, что там что там одна команда.
В первом случае адрес функции в команде, во втором - в памяти, то есть на один доступ к памяти второе дольше. Но ещё есть предвыборки данных для выполнения команд.