преимущество в скорости передачи основных типов данных по ссылке c ++ - PullRequest
3 голосов
/ 26 апреля 2011

Есть ли какое-либо преимущество в скорости передачи основных типов данных (int, float, double, bool) по ссылке в C ++?

Ответы [ 2 ]

2 голосов
/ 26 апреля 2011

Нет.

AFAIK ... способ работы справочника заключается в том, что компилятор отправит адрес памяти переданного параметра, а с другой стороны у вас есть переменная любого типа с тем же адресом памяти, что и отправленная переменная. Так что это в основном та же самая переменная, вы просто изменяете ее в другой области видимости.

Причина, по которой отправка большого объекта происходит быстрее, заключается в том, что это означает, что вам просто нужно отправить адрес памяти (или отправить указатель на) объекта, что намного меньше, чем копирование всего (большого) объекта обратно (и возможно вперед) Однако указатель обычно имеет тот же размер, что и базовый тип данных, или даже больше, поэтому его передача не спасет вас.

1 голос
/ 26 апреля 2011

Нет, возможно (для наивных реализаций) обратное. Не наивные реализации будут просто игнорировать (предположительно const) ссылку, наивным (если таковые существуют) потребуется дополнительная операция разыменования,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...