Как ООП влияет на скорость и объем используемой памяти при работе с большими объемами данных?

1,00
р.
Допустим, мне нужно оперировать данными о некоторых объектах (о центре масс, плотности, скорости и прочих параметрах). Не используя ООП я могу описать объект с помощью структуры, потом создать большой массив структур и перелопачивать его в процессе работы. Используя ООП я описываю класс объекта, создаю вектор таких классов и работаю с каждым экземпляром класса через его методы.
Насколько второй способ будет более затратен по ресурсам, если объектов очень много. Объясните пожалуйста.

Ответ
Обработчик, выполняющий манипуляции с данными структуры в обоих случаях идентичный:
struct foo { int a int b }
// в свободную функцию явно передается указатель на экземпляр структуры void do_something(foo* thiz) { thiz->a = thiz->b * 2 }
struct bar { int a int b
// в функцию-член неявно передается указатель на экземпляр структуры (this) void do_something(/* bar* this */) { this->a = this->b * 2 } }
В случае с отдельной функцией вы явно передаете указатель на структуру, в случае функции-члена - это сделает компилятор. Таким образом здесь принципиальной разницы нет в быстродействии.
Единственные накладные расходы при хранении объекта (не важно структуры или класса) - это несколько байтов на экземпляр, в случае, если используются виртуальные методы (указатель на vtab).
Что касается использования массива или вектора (std::vector) для хранения данных, то вектор, никоим образом не замедляет доступ к элементам (если специально не использовать доступ с проверкой на выход за границы массива - std::vector::at).