Здравствуйте Аноним,
Позвольте с вами не согласиться, разница в скорости может быть значительно.
В первом случае мы копируем объект при вызове функции(метода), а во втором только передаем адрес(ссылку). Если объект является большой структурой, то разница в скорости между двумя этими способами м.б. очень значительна...
Здравствуйте Vasiliy_Krasnokutsky, Вы писали:
VK>Позвольте с вами не согласиться, разница в скорости может быть значительно. VK>В первом случае мы копируем объект при вызове функции(метода), а во втором только передаем адрес(ссылку). Если объект является большой структурой, то разница в скорости между двумя этими способами м.б. очень значительна...
Здравствуйте Vasiliy_Krasnokutsky, Вы писали:
VK>Позвольте с вами не согласиться, разница в скорости может быть значительно. VK>В первом случае мы копируем объект при вызове функции(метода), а во втором только передаем адрес(ссылку). Если объект является большой структурой, то разница в скорости между двумя этими способами м.б. очень значительна...
Ты вопрос внимательно прочитал? Спрашивалось про простые типы. Для них передача по значению не медленнее (а может быть и быстрее — все зависит от того, как компилятор разместит переменную), чем передача по ссылке.
Здравствуйте Аноним, Вы писали:
А>Hi, All!
А>Скажите, а есть разница в скорости между
А>
А>void function(Type i) { /* ... */ }
А>
А>и
А>
А>void function(const Type & i) { /* ... */ }
А>
А>для простых типов (int, char, double и т.п.)?
А>(Для классов и структур второй вариант точно быстрее.)
А>Thanx.
Тут уже был целый флейм по этому поводу. См. http://www.rsdn.ru/forum/Message.aspx?mid=35976. А вкратце пришли к тому, что типы, размеры которых соизмеримы с размерами указателей на них, обычно быстрее передавать по значению. Т.е. первый вариант для простых типов предпочтительней.
Здравствуйте Аноним, Вы писали:
А>Hi, All!
А>Скажите, а есть разница в скорости между
А>
А>void function(Type i) { /* ... */ }
А>
А>и
А>
А>void function(const Type & i) { /* ... */ }
А>
А>для простых типов (int, char, double и т.п.)?
А>(Для классов и структур второй вариант точно быстрее.)
А>Thanx.
Многое зависит от оптимизации. Вообщем, можно сказать, что, если,
ссылка реализована по-честному, т.е. как константный указатель,
то первый вариант быстрее. А если параметр функции есть переменная
интегрального типа, то первый вариант быстрее всегда.
Кстати, не факт, что для классов и структур второй вариант быстрее.
Все зависит от "внутренностей" этих классов и структур. Для ссылок
на константу по определению разрешены приведения типа по-умолчанию.