суббота, 22 ноября 2014 г.

Коротко. Про STL под iOS/MacOS

Коротко. Про STL под iOS/MacOS.

Ни на что не претендую.

Несколько по мотивам:
Коротко. Об оптимизации потребления памяти под xCode. Затравочка
Коротко. Сегодня опять рефакторил свой код под xCode

Что хочу сказать?

Я - для себя лично - очередной раз убедился, что "лобовое" использование STL не годиться к написанию программ для работы в режиме 24х7.

Ну на тех платформах, что я знаю.

А именно:
Windows.
MacOs.
iOS.

STL - о конечно - хорош. Более чем.

Лучшей контейнерной библиотеки - я не видел.

Но! Не готов он в "среднем по больнице" к 24х7.

Ибо постоянно перераспределяет и копирует объекты.

И менеджеры памяти "в среднем по больнице" - этого не любят.

Ну и про "кривые руки" - не надо забывать.

Например когда написано:

std::string theValue = theContainer.getRef();
// - тут копирование данных

А не:

const std::string & theValue = theContainer.getRef();
// - тут нет копирования данных

Я вот провёл "несколько пасов руками" и достаточно оптимизировал.

Что ещё могу сказать?

Это то, что Obj-C объекты "в среднем по больнице" реализованы "эффективнее", чем C++ объекты.

За счёт View, подсчёта ссылок и кластеризации.

Например замена std::string на NSString (именно NSString, а не NSMutableString) дала ощутимый прирост как производительности, так и экономию памяти "при прочих равных".

Ну вот как-то так.

Ни на что не претендую.

Если у кого-то вдруг есть конкретные вопросы - пишите. Лучше в личку - lulinalex@gmail.com.

Написано несколько сумбурно.

Но сегодня - суббота, а я наверное часов 11-ть отработал. С непростыми задачами.

Да - и ещё я забыл написать, что во многом спасает использование STL со своими специализированными аллокаторами.

Комментариев нет:

Отправить комментарий