TGViewer
Мобильный трудоголик Мобильный трудоголик @hardworkerit · 1.64K subscribers
Post #286 1.12K
🔢 Swift Runtime: как скрытые процессы тормозят ваше приложение.

Друзья, сегодня разберем неочевидную проблему производительности в Swift, о которой мало кто знает. Речь пойдет о том, как простые операции вроде String(describing:) или as? могут серьезно замедлять работу приложения.

В Swift Runtime есть метод:

swift_conformsToProtocolMaybeInstantiateSuperclasses


который выполняет проверки соответствия типов протоколам. В больших приложениях с десятками тысяч типов эти проверки превращаются в линейный поиск по огромному массиву.


Пример где мы теряем производительность:

String(describing:) и String(reflecting:)

Кажется безобидным, но:


struct User {
let id: Int
let name: String
}

let user = User(id: 1, name: "John")
let description = String(describing: user) // 4 проверки протоколов!


Приведение типов

Операции as? при работе с протоколами оказались особенно затратными:


// Такой код может быть затратнее, чем кажется
if let convertible = value as? CustomStringConvertible {
print(convertible.description)
}

// Приведение к конкретному классу работает значительно быстрее
if let viewController = object as? UIViewController {
}


Дженерики с ограничениями


// Плохо для производительности
class Cache<T: Codable & Sendable> {
}

// Лучше
class Cache<T> {
let encode: (T) -> Data
let decode: (Data) -> T

init(encode: @escaping (T) -> Data, decode: @escaping (Data) -> T) {
self.encode = encode
self.decode = decode
}
}



🔗 Ссылка на подробную статью


💡 Вывод:

Производительность Swift-приложений - это не только вопросы асинхронности и сложных алгоритмов. Самые значительные улучшения часто скрываются в понимании внутренних механизмов Swift Runtime и оптимизации, казалось бы, элементарных операций.


➡️ Подписаться на канал
Мобильный трудоголик
  • 👍 11
  • 🔥 5
  • ❤ 1
  • 👏 1
  • 🫡 1
More from @hardworkerit
  1. Oct 4, 2026🔢 SwiftUI: определение угла раскрытия iPhone Duo. В iOS 27.1 появился модификатор .onHing…
  2. Oct 2, 2026👣 Архитекторы, тестировщики и кодеры. Создаем мультиагентную команду Разработка с ИИ-аген…
  3. Oct 1, 2026🔢 Работа с Picture-in-Picture в iOS. Picture-in-Picture - системная функция iOS, которая…
  4. Sep 29, 2026🔢 Управление тулбарами на iPhone Duo. На iPhone Duo элементы управления навигацией, дейст…
  5. Sep 27, 2026🔢 Новые возможности Hashable в Swift 6.4 В Swift 6.4 добавили Hashable для нескольких тип…
  6. Sep 25, 2026🔢 Приватные свойства больше не ломают memberwise инициализатор в Swift 6.4 Swift автомати…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →