Как ООП влияет на скорость и объем используемой памяти при работе с большими объемами данных?
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).