Другие языки программирования и технологии
Какая разница, передавать в функцию объект или адрес объекта?
Что быстрее, эффективнее?
Быстрее передавать указатель/ссылку на объект (то, что ты называешь адресом) - это в подавляющем большинстве случаев намного меньше по объёму, чем сам объект.
А вот будет ли это эффективнее, зависит от множества факторов, среди которых и структура данного объекта, и особенности архитектуры данного процессора, и методы оптимизации кода, используемые данным компилятором...
А вот будет ли это эффективнее, зависит от множества факторов, среди которых и структура данного объекта, и особенности архитектуры данного процессора, и методы оптимизации кода, используемые данным компилятором...
Во-первых, зависит от языка: во многих языках объект равноценен ссылке, чтобы передать копию объекта его надо для начала клонировать ручками.
Ссылка в самом общем случае работает быстрее, а вот как будет эффективнее - зависит от конкретного алгоритма и тех оптимизаций, которые наворотит компилятор.
Ссылка в самом общем случае работает быстрее, а вот как будет эффективнее - зависит от конкретного алгоритма и тех оптимизаций, которые наворотит компилятор.
при неоднократном обращении к функции быстрее объект.
однако память увеличивается
однако память увеличивается
Если умеешь адресовываться к функциям объекта (да и к данным) посредствам offset-а, то плодить сущности (передавать в функцию объект) смысла нет: захламишь память (особенно при рекурсивном вызове) и уменьшишь скорострельность. Поэтому, если можешь передавать адрес объекта и адресоваться посредствам него - делай через него
Ну и существенная разница состоит в том, что надо ли функции менять сам объект, или нет.
Если должен быть меняемый объект, при этом старый - сохраниться (что очень редко, но может быть), то тогда, конечно, только весь объект функции на вход. Но это крайне редко можно такое встретить.
Ну и существенная разница состоит в том, что надо ли функции менять сам объект, или нет.
Если должен быть меняемый объект, при этом старый - сохраниться (что очень редко, но может быть), то тогда, конечно, только весь объект функции на вход. Но это крайне редко можно такое встретить.
С современными компиляторами практически никакой разницы.
Но в теоретически это должно влиять будет ли объект переносится из общей кучи на стек. работа со стеком для функции быстрее но сам перенос требует затрат ресурсов и сам стек не резиновый.
И в одном и в другом случае компилятор сам попытается угадать какое размещение будет эффективнее.
Но в теоретически это должно влиять будет ли объект переносится из общей кучи на стек. работа со стеком для функции быстрее но сам перенос требует затрат ресурсов и сам стек не резиновый.
И в одном и в другом случае компилятор сам попытается угадать какое размещение будет эффективнее.
Похожие вопросы
- Создание объекта внутри функции C++
- Агрегация объектов. С++
- Экземпляра класса, объекты
- рисующие цифровые картины, подскажите как экспортируете объекты из Corel в Photoshop?
- Покраска 3д объекта в bleder или photoshop
- Delphi:Прочитал, что если при динамическом создании компонента если указать Name объекта, то в последующем можно ->
- Есть ли смысл максимально стараться передать в функции ссылки на объекты, а не создавать их копии?
- Что такое объект в программировании?
- СРОЧНО !!!ВЫРУЧАЙТЕ !!!Как в Photoshop уменьшить размер фото , СОХРАНИВ ПРИ ЭТОМ ПРОПОРЦИИ ОБЪЕКТА НА ФОТО!!!
- JS-программеры! подскажите пожалуйста код для перемещения объекта курсором мыши.