ObjectiveC Категория и скорость исполнения и набора текста - PullRequest
3 голосов
/ 21 марта 2012

Я думаю об обертывании часто используемых селекторов объектов Какао собственным кодом для повышения скорости набора текста. Типичным примером будет что-то вроде обрезки пробела: -

[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

Мой выбор: -

(1) оберните его в категорию NSSTring, вот так

- (NSString *)Trim 
{
    return [self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

(2) вместо этого определите его как макрос

#define TRIM(X) [X stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]

Я бы предпочел вариант (1) выше, но есть ли какие-нибудь проблемы с производительностью?

1 Ответ

3 голосов
/ 21 марта 2012

Крайне маловероятно, что категория будет иметь какое-либо существенное или даже заметное различие в производительности.

Метод категории требует одну дополнительную отправку сообщения, поэтому да, он будет медленнее, чем макрос.Но диспетчер сообщений ObjC является одним из наиболее оптимизированных фрагментов кода во всей ОС - он ни в коем случае не медленный.

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

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

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