Например, есть у нас функция, которая определяет наименьшую из длин двух строк.
Есть ли смысл передавать ей ссылки на эти строки, для экономии памяти? При условии, что во время выполнения функции строки не изменяются. Понятно, что в условиях современных ПК это выгода незначительна, но профит имеется в принципе?
Другие языки программирования и технологии
Есть ли смысл максимально стараться передать в функции ссылки на объекты, а не создавать их копии?
Даже в условиях современного ПК выгода значительна: передача по ссылке - это просто передача адреса объекта (ссылка - это неявный указатель) . И это на порядки быстрее, чем копировать содержимое объектов.
Разумеется, если мы говорим про языки, допускающие передачу объекта и по ссылке, и по значению... А не про Java, JavaScript, PHP и множество других языков в которых объект - всегда ссылка.
Разумеется, если мы говорим про языки, допускающие передачу объекта и по ссылке, и по значению... А не про Java, JavaScript, PHP и множество других языков в которых объект - всегда ссылка.
Сергей Карпук
прикольно, когда тип объекта - эта структура, которая имеет единственное поле, и в нем бит аккурат столько же, сколько в адресе - 64.
>Понятно, что в условиях современных ПК это выгода незначительна,
Еще как значительна. Попробуй миллион раз вызвать функцию с передачей по ссылке, и другую - по значению, почувствуй разницу.
Еще как значительна. Попробуй миллион раз вызвать функцию с передачей по ссылке, и другую - по значению, почувствуй разницу.
Канат Рамазанов
Если язык компилируемый, а программы простые, и собраны в релиз - разницы может не быть.
Патамушта оптимайзер))
Патамушта оптимайзер))
В большинстве высокоуровневых ЯП, экземпляры объектов автоматически передаются по ссылке - для этого ничего специального не надо делать. Если пишешь на таком языке, то созданием копий ты только усложняешь код, и тормозишь его выполнение.
Вот конкретно строки, это непростой тип. Очень сильно различается их реализация в разных языках, и бывает разное поведение при передаче аргументами (даже в рамках одного языка! Если изучал делфи, то наверное знаешь, что строка там передается по ссылке только если функция ее не мутирует: код передачи одинаков, а фактическое поведение - разное).
Поэтому, без конкретики о ЯП и том как именно работаешь со строками, ничего нельзя порекомендовать.
Вот конкретно строки, это непростой тип. Очень сильно различается их реализация в разных языках, и бывает разное поведение при передаче аргументами (даже в рамках одного языка! Если изучал делфи, то наверное знаешь, что строка там передается по ссылке только если функция ее не мутирует: код передачи одинаков, а фактическое поведение - разное).
Поэтому, без конкретики о ЯП и том как именно работаешь со строками, ничего нельзя порекомендовать.
"Например, есть у нас функция, которая определяет наименьшую из длин двух строк.
Есть ли смысл передавать ей ссылки на эти строки"
зачем ей строки, передавай длины.
а профит еще в том, чтобы тебя на code review старшие коллеги не грузили этим, а то будут\ешь грузить\ться и что-то куда более важное забудут\ешь.
Есть ли смысл передавать ей ссылки на эти строки"
зачем ей строки, передавай длины.
а профит еще в том, чтобы тебя на code review старшие коллеги не грузили этим, а то будут\ешь грузить\ться и что-то куда более важное забудут\ешь.
Похожие вопросы
- С++ Передать в функцию квадратную матрицу и вычислить сумму элементов на ее главной диагонали и вернуть эту сумму.
- Скиньте пожалуйста ссылку на программу что бы создавать фото клип с музыкой!!!
- Как можно передать ДВУМЕРНЫЙ массив в функцию в С++, не создавая его, как глобальный. Пример ниже:
- Как передать функцию в качестве параметра другой функции на C++?
- Создание объекта внутри функции C++
- Как правильно передать указатель на функцию
- Какая разница, передавать в функцию объект или адрес объекта?
- Как передать имя переменной из функции?
- Как передать матрицу в функцию?
- Есть ли смысл создавать БД на Делфи?