Замедляет ли большое количество селекторов программы Objective-C? - PullRequest
2 голосов
/ 20 января 2010

когда я регистрирую большое количество (более 10000) дополнительных селекторов в программе Objective-C с использованием функции времени выполнения sel_registerName, это замедляет мою программу? Не учитывая время, необходимое для регистрации этих селекторов.

С уважением, Jochen

Ответы [ 2 ]

4 голосов
/ 20 января 2010

Это замедлит работу вашего приложения только в том случае, если вы создаете чрезвычайно патологически именованный набор селекторов, которые просто случаются со всеми стеками в одном сегменте в хэше селекторов в кэше методов Objective-C.

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

Хотя ответ rpetrich верен, объем ОЗУ на селектор минимален.С точки зрения самого селектора, это будет просто ценность адреса.Фактическое значение селектора обычно не используется.Если селекторы состоят из статически распределенных строк, маловероятно, что что-то действительно коснется памяти (если только ваш код этого не сделает).

Если вы динамически генерируете имена селекторов, тогда выделения, очевидно, будут заниматьувеличение памяти.

(Мне, конечно, очень любопытно, почему вы генерируете так много селекторов. Довольно нетипичный образец!)

1 голос
/ 20 января 2010

Нет, но каждый селектор должен быть резидентным в памяти и не может быть незарегистрированным. Это уменьшит объем оперативной памяти, доступной для остальной части вашего приложения.

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