Кто-нибудь использует только контрольные переменные для повышения эффективности и уменьшения размера? - PullRequest
1 голос
/ 28 октября 2011

Если некоторые из вас еще не заметили, я нуб.С учетом сказанного, вот мой вопрос:

Кто-нибудь из вас, опытных программистов, использует ссылочные переменные для уменьшения памяти, необходимой для ваших программ?Я думал, что, хотя это, вероятно, опасная практика, вы можете использовать ссылочные переменные для мобильных приложений, чтобы заставить их использовать меньше памяти и сделать их быстрее.

Я знаю, что в C ++ при передаче переменной в качестве аргумента, для функции, которая создает копию этой переменной, но вы можете использовать &, чтобы сделать ее ссылочной переменной, которая просто указывает на область памяти переменных.Разве это не заставит вашу программу использовать меньше памяти в целом и ускорить процесс?

Ответы [ 3 ]

2 голосов
/ 28 октября 2011
  1. Для больших вещей, таких как структуры и объекты, ссылка использует меньше памяти. Однако большинство людей все равно передают их по ссылке, поэтому для нашего обсуждения это не имеет значения.

  2. Меньшие вещи, такие как целые числа и символы, имеют тот же размер или меньше, чем ссылка. Нет передачи памяти, передавая их по ссылке ...

  3. ... но есть снижение производительности, так как ссылки должны быть разыменованы для манипуляции значением.

  4. Наконец, передача по ссылке более подвержена ошибкам, чем передача по значению. Программы должны быть собраны для корректности первой и второй производительности.

1 голос
/ 28 октября 2011

Это зависит от (а) базовой архитектуры, (б) платформы и (в) языка, который вы используете, но общий ответ: нет - это не лучшая (или даже распространенная) практика оптимизации и да - программы могут работать медленнее (намного медленнее!) При вашем подходе.

0 голосов
/ 28 октября 2011

В C переменные передаются по значению по умолчанию, и в большинстве случаев нет преимущества в передаче по ссылке, поскольку вы все еще передаете значение (это просто указатель, а не значение, к которому он относится).Имейте в виду, что указатель на байт будет больше, чем сам байт!

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

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