Как ускорить protocol conformance check
- Protocol conformance check каждый раз при выполнении в рантайме проходится по всем ProtocolConformanceDescriptor, содержащимся в бинарнике. Чем больше у вас протоколов, тем медленнее выполняется эта операция.
- В iOS 16 завезли улучшение за счет использования специального кэша, который хранит в себе посчитанные заранее результаты соответствия протоколов. Но есть ряд кейсов, в которых эта фича не работает, в частности при первом запуске приложения, когда кеши еще не заполнены, при отсутствии результатов проверки соответствия или на старых версиях iOS.
- В статье рассказывается, как с помощью специально настроенных order файлов, которые объясняют линкеру, как правильно группировать код, можно улучшить скорость во всех описанных сценариях.
- Авторы статьи в своих тестах получили прирост на 20% на iPhone 7 с iOS 15.