C ++: глобальный экземпляр класса против пространства имен: использование оперативной памяти? - PullRequest
0 голосов
/ 28 января 2020

Я работаю в очень ограниченном по объему RAM и программам пространстве. У меня есть небольшая коллекция связанных переменных и функций, которые я бы хотел осмысленно объединить. Эта коллекция будет видна остальной части программы.

Мой первый импульс (и фактически реализация) состоит в том, чтобы создать класс, чтобы сгруппировать всю эту информацию вместе, а затем создать один глобальный экземпляр этого класса. Я понимаю, что именно так и нужно поступать. Однако есть другой способ сделать это, используя пространство имен, которое не требует инстанцирования.

Мой вопрос сводится к следующему: использует ли подход пространства имен меньше ОЗУ? Под этим, я полагаю, я подразумеваю, вызывает ли создание экземпляра класса дополнительное использование ОЗУ или какие-либо другие виды накладных расходов? Или, может быть, он вообще использует ОЗУ по-другому, как, например, инстанцирование заставляет все переменные существовать в куче вместо какого-то выделенного адреса?

1 Ответ

1 голос
/ 28 января 2020

Добавление пространства имен на самом деле не влияет ни на одну часть времени выполнения программы. Для компилятора это просто способ найти соответствующие имена, поэтому он не должен потреблять дополнительную оперативную память. Каждый экземпляр класса будет использовать ОЗУ для хранения своих переменных-членов, но, учитывая, что эти переменные все еще существуют в примере пространства имен, он не будет отличаться.

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

...