- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
Ini ini(m_serviceProvider);
if( ini.load( gameInputStream ) == false )
{
LOGGER_ERROR(m_serviceProvider)("StartupConfigLoader::loadGame_ Invalid load game settings '%s'"
, _gameIniPath.c_str()
);
return false;
}
IniUtil::getIniValue( ini, "Project", "Name", _settings.projectName, m_serviceProvider );
IniUtil::getIniValue( ini, "Project", "Company", _settings.companyName, m_serviceProvider );
IniUtil::getIniValue( ini, "Project", "Codename", _settings.applicationSettings.projectCodename, m_serviceProvider );
IniUtil::getIniValue( ini, "Project", "Version", _settings.applicationSettings.projectVersion, m_serviceProvider );
IniUtil::getIniValue( ini, "Locale", "Default", _settings.defaultLocale, m_serviceProvider );
IniUtil::getIniValue( ini, "Game", "ContentResolution", _settings.applicationSettings.contentResolution, m_serviceProvider );
IniUtil::getIniValue( ini, "Game", "FixedContentResolution", _settings.applicationSettings.fixedContentResolution, m_serviceProvider );
IniUtil::getIniValue( ini, "Game", "PersonalityModule", _settings.personalityModule, m_serviceProvider );
IniUtil::getIniValue( ini, "Game", "AlreadyRunning", _settings.alreadyRunning, m_serviceProvider );
IniUtil::getIniValue( ini, "Game", "WindowModeCheck", _settings.applicationSettings.windowModeCheck, m_serviceProvider );
IniUtil::getIniValue( ini, "Window", "Size", _settings.applicationSettings.windowResolution, m_serviceProvider );
IniUtil::getIniValue( ini, "Window", "Bits", _settings.applicationSettings.bits, m_serviceProvider );
IniUtil::getIniValue( ini, "Window", "Fullscreen", _settings.applicationSettings.fullscreen, m_serviceProvider );
IniUtil::getIniValue( ini, "Window", "MaxFPS", _settings.maxfps, m_serviceProvider );
IniUtil::getIniValue( ini, "Window", "VSync", _settings.applicationSettings.vsync, m_serviceProvider );
Это оттуда уже другой. Они все сговорились что-ли? Ынтерпрайз головного мозга.
PS: boost::property_map не осилил.
Отличное использование ООП. Да еще и возвращает результат через анус (видимо ради type inference).
И тут писатель задумается над списками инициализации, и поймет, что нужно ждать следующего обновления стандарта.
ЗЫ. А помните как в конце девяностых было круто слать анимированые сообщения в статус-баре браузера, типа:
.:::you are the 21'st visitor:::.
Ынтерпрайз головного мозга - это когда такие хомячки как ты, постят всякую срань ни разу не задумываюсь почему было написано так. Удачи тебе в твоем колесе )
P.S. Что-за мобилки такие тормозные и умеющие в с++, явно же не андроид? Старенький симбиан? И какой размер конфига?
там все плохо с new + free,
ты не поверишь это бы iPad1
Ну я погуглил немного сейчас. Куча народу жалуется на тормоза мармеладного аллокатора. Он походу тупо загибается от сильной фрагментации, которую ему устраивают стринг и мап.
Так что я верю ;)
Если отожрать себе пул памяти при запуске и реализовать в нём свою суперэффективную систему выделения памяти для дерева конфигов, это решит проблему?
Но это же, имхо, на порядок сложнее, чем sax'ом распарсить.
Воспитать сына и посадить дерево.
Кстати, а ведь в старых добрых аллокаторах либц и мсвц нет такой адской просадки от фрагментации. У них поди несколько фрилистов под разные размеры, чтобы меньше сканить при поиске дырок?
Дык у мармеладки судя по докам свой велосипедный аллокатор. Отдельный пул указанного в конфиге размера и все такое. Так что походу тормозить под подобной нагрузкой он будет где угодно, и от железа мало что зависит.
On a crappy ARM board with a single core glibc can do 300 000 malloc/free pairs per second.
Кстати, какого хрена люди юзают SAX (push)? Ведь pull-парсер не менее эффективен, а код выглядит не как говно, а как нормальный рекурсивный спуск.
Ты хотел сказать property_tree?
Зайти в эти учётки сможет только тот, кто к ним пароль устанавливал последним.
lurk
http://lurkmore.to/_/55784#mws_7RODybD