Другие языки программирования и технологии

Есть ли смысл максимально стараться передать в функции ссылки на объекты, а не создавать их копии?

Например, есть у нас функция, которая определяет наименьшую из длин двух строк.
Есть ли смысл передавать ей ссылки на эти строки, для экономии памяти? При условии, что во время выполнения функции строки не изменяются. Понятно, что в условиях современных ПК это выгода незначительна, но профит имеется в принципе?
Даже в условиях современного ПК выгода значительна: передача по ссылке - это просто передача адреса объекта (ссылка - это неявный указатель) . И это на порядки быстрее, чем копировать содержимое объектов.

Разумеется, если мы говорим про языки, допускающие передачу объекта и по ссылке, и по значению... А не про Java, JavaScript, PHP и множество других языков в которых объект - всегда ссылка.
Сабыржан Тусупов
Сабыржан Тусупов
68 055
Лучший ответ
Сергей Карпук прикольно, когда тип объекта - эта структура, которая имеет единственное поле, и в нем бит аккурат столько же, сколько в адресе - 64.
>Понятно, что в условиях современных ПК это выгода незначительна,
Еще как значительна. Попробуй миллион раз вызвать функцию с передачей по ссылке, и другую - по значению, почувствуй разницу.
Канат Рамазанов Если язык компилируемый, а программы простые, и собраны в релиз - разницы может не быть.
Патамушта оптимайзер))
В большинстве высокоуровневых ЯП, экземпляры объектов автоматически передаются по ссылке - для этого ничего специального не надо делать. Если пишешь на таком языке, то созданием копий ты только усложняешь код, и тормозишь его выполнение.

Вот конкретно строки, это непростой тип. Очень сильно различается их реализация в разных языках, и бывает разное поведение при передаче аргументами (даже в рамках одного языка! Если изучал делфи, то наверное знаешь, что строка там передается по ссылке только если функция ее не мутирует: код передачи одинаков, а фактическое поведение - разное).
Поэтому, без конкретики о ЯП и том как именно работаешь со строками, ничего нельзя порекомендовать.
Дмитрий """""""""
Дмитрий """""""""
95 639
"Например, есть у нас функция, которая определяет наименьшую из длин двух строк.
Есть ли смысл передавать ей ссылки на эти строки"

зачем ей строки, передавай длины.

а профит еще в том, чтобы тебя на code review старшие коллеги не грузили этим, а то будут\ешь грузить\ться и что-то куда более важное забудут\ешь.
Талгат Ибраев
Талгат Ибраев
92 464