У меня относительно большое академическое программное обеспечение для моделирования (50 классов). Пользователь выбирает файл конфигурации, который содержит более 20 элементов. Эти постоянные переменные используются во всей платформе моделирования (почти в каждом классе). Симуляция запускает сотни тысяч объектов агента несколько раз в секунду, поэтому производительность важна.
В настоящее время я использую класс настроек Singleton. Я использую этот экземпляр, чтобы получить значения, считанные из файла, в класс при запуске программы (я не хотел добавлять ссылку на класс настроек в каждом другом классе).
1- Я недавно запустил профилировщик и обнаружил, что чрезмерные вызовы getInstance (). GetSomeSetting () снижают производительность.
2. Каждый раз, когда я говорил об использовании синглтона, я получал много осуждений.
Каков наилучший способ доступа к настройкам в таком сценарии? Должен ли я использовать глобальные переменные для этих 20+ элементов конфигурации?
Вы можете сохранить объект конфигурации в shared_ptr и передать его куда угодно, таким образом у вас будет один объект настроек
Других решений пока нет …