
Код Telegram iOS — лучший в индустрии. Почему же он так лагает на флагманах?
Exeypan 1 час назад Код Telegram iOS — лучший в индустрии. Почему же он так лагает на флагманах? Средний 4 мин 1.1K iOS * Мессенджеры * Swift * Аналитика TL;DR из-за ООПЯ программирую под iOS с 2010 года. Начинал в...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. Exeypan 1 час назад Код Telegram iOS — лучший в индустрии. Почему же он так лагает на флагманах? 1K iOS * Мессенджеры * Swift * Аналитика TL;DR из-за ООПЯ программирую под iOS с 2010 года.
Начинал в геймдеве, хорошо прокачался в C/C++, пытался развивать iOS-направление в тогдашнем Мэйл. ру — в 2011-м там была всего одна команда под iOS это ICQ. Сегодня работаю кросс-функциональным архитектором, пишу больше на Go, но Swift люблю, понимаю Swift Runtime/LLVM + эти знания помогают понимать Rust.
Технические детали
Я с 2015 года регулярно участвовал в проектировании мессенджеров — бэкенд и мобайл, даже делали аналог мессенджера запрещенной соцсети на MQTT + Thrift с кодогенерацией. И хорошо понимаю проблемы масштаба крупных мобильных проектов. В быту Telegram использую по максимуму — Premium, 1000 чатов под завязку, баги ловлю каждый день на iPhone 17 Air и iPad Pro 12.
По выходным собираю архитектурные стат-анализаторы кода. Swift-овый отлаживаю прямо на кодовой базе Telegram для iOS. Сгенерировано с помощью происходит?
Telegram — технически самый сложных мессенджер в мире. 1M+ строк, 700+ модулей, 86% Swift, 13 лет кодовой базы, и мало ObjC — это колоссальный труд. Но при этом приложение лагает на флагманах, AsyncDisplayKit открывает по 10 дублей окон разом(а это явно тормозит ARC), крэши на редактировании изображений стабильны годами.
Отраслевые последствия
Потому что 86% кода написаны на Swift, но разработчики мыслят все еще в парадигме ООП. ООП в Swift — это не просто устаревший стиль, это потерянная производительность. Swift — не Java и не Kotlin.
Это язык, архитектура которого буквально заточена под Protocol Oriented Programming. При компиляции SIL (Swift Intermediate Language) умеет убирать косвенную диспетчеризацию, инлайнит вызовы, специализирует дженерики. И лучше всего это работает если вы пишите в парадигме Protocol Oriented Programming.
На небольших проектах POP или ООП не особо незаметно, когда как на гигантских это треть производительности приложения. Стат-анализ насколько код Telegram написан в духе Protocol Oriented ProgrammingНасколько бы лучше работал телеграм с 80%+ POP:от 10 до 25% лишнего CPU-оверхеда из-за медленной диспетчеризации через Virtual Table там, где мог быть Direct Dispatch+20–30% к памяти из-за ненужных аллокаций в куче вместо value-типовФреймрейт в горячих User-флоу вырос бы минимум на треть при переходе на POPКрэшей стало бы меньше — просто потому что исчезла бы часть неожиданных мутаций shared-состояния Время основных диспатчеризаций на Apple Silicon процессорахПроблемы производительности идущие от ООП в Swift:1. Virtual table когда этого можно избежать.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





