Pull to refresh

Comments 66

Хорошая попытка, но в ТГ вас скорее всего не позовут) "не может ученик лучше учителя делать"

Я не стремлюсь. У меня есть приятели кто работал у Павла уже в тг :)

Там постановка по 12 часов без продоху? Платит он хоть нормально за такой объем работы? Мне кажется не особо то и много платит))

Платит очень хорошо, но 12 часов в сутки да стабильно и возможно в выхи, меня хоть это не пугает, потому как я технический энтузиаст, но есть и личная/семейная жизнь

“No dates without monthly updates” :)

И долго можно проработать по 12 часов? Ну два года, потом выгорел... Если есть семья, это будет не реальная история...

В таком режиме до 2х лет думаю возможно, но только за х2 надо соглашаться 😁

несколько лет назад слышал что там чуть ли не один разработчик работает) это же не так?))

судя по гиту до 5

Да, примерно так — keepcoder чё-то там. Native macos клиент телеги, с которого большинство сваливает на Telegram Desktop, тоже в основном его же авторство, скорее всего. Дойдут руки — черкану как я однажды выяснил, а чё это time machine так жёстко тупит. Казалось бы, при чём тут ©

(и про «лучший в индустрии» — 😅)

Один разработчик, и 5000 уборщиков (оптимизаторов) кода.

Вы очень заблуждаетесь оценивая стоимость вызовов функций. В обычном клиентском ПО вызовы методов можно считать бесплатными.

ну у нас же не Desktop, а мобилки с батарейкой и урезанным всем CPU и памятью

ЦПУ Айфона от десктопного не то чтобы сильно отличается. Особенно если десктопу лет 5.

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

Вы если посмотрите в код тг то там даже словарь для ml-модели для расшифровки речи лежит, нагрузка сильная и UI не на чистом Metal

И эта нагрузка никак не зависит от того как мы вызываем функции в 99 процентах кода.

Зависит от того как часто ARC через память гоняет большие объемы -- поэтому у меня на медиа и крэшится, более эффективный код лучше с памятью работает -- а это в том числе и как мы вызываем код. Еще лаги есть на энергосбережении с падениями тоже, особенно на кружках

Не зависит. И память от способа вызова функций не зависит. И лаги не зависят.

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

Вы явно сейчас не про LLVM и SIL

Я про то как софт работает. И про то что есть смысл оптимизировать.

Вызовы методов оптимизировать нет смысла. Это вообще ничего не даст.

Интересно, где вы проспали последние лет 6.

Именно из-за такого мышления и пропадает оптимизация в современном софте видимо

Закон Паретто был сформулирован в 1951 году.

А чё там делать? Овертаймить за 2х к рынку?

Я давно не рассматриваю вакансии в мобайле, при смене работы оферов хватает :)

Верните нормальный клиент на андроид, "лучшеделы"

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

А это когда они натянули на Андроид UI/UX iOS?

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

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

на больших enum будет же сложность O(1) против O(n) чем у if, в енаме джамп-тейбл же благодаря LLVM енамы быстрее в Swift

Ну т. е таблицу виртуальных функций заменили на джамп таблицу. В чем тогда профит?

Переход на async/await тоже думаю даст буст клиенту.

Да сейчас один единственный Actor :)

Да, полностью с вами согласен) Но его еще нужно включить в Xcode, насколько я знаю у них старая кодовая база, не факт что MainActor вообще включен так как у них там вроде кастомный сборщик. Когда пишешь на async/await + mainactor компилятор начинает очень сильно придираться к каждой строчке, тут race condition, тут не copyable, тут еще что-то и в итоге код получается более безопасным.

Свифтаны, это правда или автор фантазирует? Настолько неадекватные накладные расходы на ООП? Мне кажется, в современной джаве даже самый лютый enterprise fizz-buzz с абстрактными фабриками абстрактных фабрик будет тормозить всё же на на ООП.

Да только от части, и то скорее нет чем да. С протоколами те же самые проблемы, компилятор не магическая штука и не всегда способен определить конкретный тип чтобы заспециализировать или заинлайнить (если явно не сказать через аннотации), да даже тут на хабре много статей про то, что протоколы создают больше проблем чем пользы, иногда очень большие накладные расходы в рантайме. Про shared объекты я вообще не понял, ведь иногда проще и дешевле на стек положить одну ссылку на объект класса, чем разворачивать целую структуру. Но некоторые идеи верны, например использовать value типы чтобы избежать аллокаций в хипе. В общем статья 50/50, но этот моё мнение.

Производительность клиента нормальная, а вот баги команда тг не исправляет не потому что у свифт другая архитектура, а потому что им тупо лень

А зачем исправлять? Каждые три-шесть месяцев новая парадигма и все заново.

POP больше 10 лет, и Swift под POP проектировался с момента появления SIL в Swift 2.0

Во тспециально посмотрел, у меня iPhone 15Pro Max.

Вроде как и флагман, но уже и не новый.

Ничего не лагает.

Баги наверное иногда вылазят, но я уж не помню когда и какие.

Подписка Премиум, сотни контаков, десятки каналов...

Что я не так делаю?

Что я не так делаю?

Если говорить о том, что ты делаешь-не-так™, очевидным ответом будет «не изучаешь когнитивные искажения». Их довольно много. В твоём случае стоит как следует разобраться с ошибка выжившего (для начала).

Если говорить о том, что ты делаешь-не-так™, очевидным ответом будет «не изучаешь когнитивные искажения». Их довольно много. В твоём случае стоит как следует разобраться с ошибка выжившего (для начала).

Для начала я бы тебе рекомендовал бы разобраться с Confirmation Bias. Ну так для начала.

А затемпредлагаю сходить в 3й или 5й класс общеобразовательной школы. Где рассказывают про построение предложений, связный текст и что имеется в виду, когда пишут те или иные буквы.

Я спросил "Что я не так делаю?".

Это вопросительное предложение. Это означает что ответа я не знаю и хотел бы его получить.

Вопрос обобщенный, тоесть ответ на него ожидается в контексте дискуссии.

О чем контекст? О багах клиента телеграмма под айось. Что я спрашиваю? Что надо сделат ьчтобы баги увидеть. Тоесть предполагается(да и выше прямым текстом пишется) что у меня багов нет и вопрос в том в каких кейсах они появляются.

Давай теперь проанализируем ситуацию с точки зрения искажения про ошибку выжившего.

Я сознательно отношу себя и автора статьи в разные группы - у негно баги есть постоянно, у меня их нет.

Я предполагаю что моя группа малочислена и спрашиваю.. правильно, про то в чем же моя систематическая ошибка выжившего.

Что поулчаю от тебя в ответ - пафосный пук в лужу.

слу, ты если не готов получать ответ по теме «что ты делаешь не так», то и не задавай этот вопрос. 😅

Слу, ты настолько туповат что даже не понял что тебя потыкали в когнитивные искажения как котенка в лоток с известно чем?

А затемпредлагаю …

тоесть ответ на него …

телеграмма

предполагаю что моя

😅 И вот эти люди, которые не знают, что:
• Telegram — имя собственное и пишут «телеграмма»,
• перед «что» обычно ставится запятая
и прочая-прочая — чё-то пыжатся рассказывать про «общеобразовательную школу» и лоток? Так ты же вместо школы в него и ходил, очевидно же.

Я спросил "Что я не так делаю?".

Ааа, конечно. Стервозная формула «Что я делаю не так» при имплицитном «я-то делаю всё правильно, это с вами что-то не так» — пафосное, риторическое восклицание с подоплёкой. Стоило тебе в ответ поесть ответа по существу, как человечество приблизилось к термоядерному синтезу в домашних условиях. Но ты в школу-то сходи всё-таки, для начала. С лотком только не перепутай по привычке.

Потыкаю в последний раз. В этом прекерасном посте собраны следующие когнитивнеы искажения и манипцуляционные приемы:

  1. labeling and mislabeling

  2. упомянутый confirmation bias

  3. mind reading

  4. straw man fallacy

  5. Blaming

Свободен.

Я использую тг с 2013 года, и у меня выюзаны лимиты на чаты и каналы(1000 публичных на Premium): это програмерские каналы и чаты(в некоторых в день по 10К сообщений), за минуту я вижу 20-30 обновлений, но не читаю их
AsynDisplayKit например у меня лагает при пересылке на форварде может открыться несколько окон
а крэшится если отправлять фотки и просто их повращать перед отправкой

 у меня выюзаны лимиты на чаты и каналы

Хм, наверное лимиты вводили в том числе и исходя из техничнеских ограничений и... то что при таких нагрузках оно лагает, я не удивлен. Но наверное это не самый типичный юзкейс.

за минуту я вижу 20-30 обновлений, но не читаю их

Человек, который переосмыслит эти вечные уведомления, из каждого утюга, по любому поводу, в какой-то степени, спасет Мир…

за минуту я вижу 20-30 обновлений, но не читаю их

удали 85% каналов - и в твоей жизни ровно ничего не изменится. А так проц твоего телефона тупо греет воздух в тщетных попытках отобразить ненужное.

дело в том что я удалил, 96% каналов и чатов у меня с обновлениями 1-2 в неделю

Зачем столько каналов? Пришло время выйти на улицу и потрогать траву;). Вообще не читаю каналы, для себя понял , что очень часто там мало полезной информации чтобы заходить и смотреть КАЖДЫЙ день -waste of time

Некоторые читаю раз в год, и нередко это по работе. Вот сейчас некоторых не хватает

Даже 25% потери производительности разве это критично?

Для пользователей типа меня да, для меня тг уже немного по ценности как сама ОС

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

отличный ресерч, почему вы еще не в команде Телеграмм с окладом 1м$ ?


Думаю Павлу, прочитав этот пост, стоит объявить новый контест на оптимизацию.

Ну тогда ждем контеста, мне коллеги сказали что в Android аппе еще бОльшие проблемы :)

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

Он уже настолько большой и сложный, что с нуля его не напишешь

В каком месте он большой и сложный? Обычный мессенджер и чат, никаких интересных фич. Обычный список юзеров и чатов, сильно ограниченный маркдаун, что сложного то и где?

Код Telegram iOS — лучший в индустрии. Почему же он так лагает на флагманах?

Не знаю как в iOS (я не разработчик и не пользователь), но в остальной индустрии, если код лагает на целевых платформах, то это плохой код. Если плохой код —лучший в индустрии, то в индустрии есть проблемы

А у кого еще приложение такого уровня глубины UI и фич?

При такой объемной кодовой базе проще не оптимизировать, в написать заново - ибо тронешь одно, сломается в десятке мест из-за зависимостей. И не всегда это можно предсказать тестами.

Там уровень рефакторинга кода похож на полное переписывание, я слежу за кодом телеграма 8 лет

Sign up to leave a comment.

Articles