Пользователь
0,0
рейтинг
7 декабря 2011 в 19:08

Разработка → По следам разрушителей мифов или Почему Android тормозит, а %мобильная ОС% нет? перевод



Добрый день, Хабр!

Мой предыдущий перевод статьи про аппаратное ускорение в Android вызвал бурное обсуждение в комментариях, основным мотивом которого был вопрос «так почему же тормозит Android?». Аналогичная ситуация наблюдается по всему интернету, и потому я привожу ниже еще один очень интересный и свежий перевод (снова из Google+), где автор Andrew Munn (о нем ниже) анализирует настоящие причины тормозов Android. С удовольствием прочитал этот пост сам и горд возможностью первым поделится им с хабрасообществом.



Почему Android тормозит, в то время как iOS, Windows Phone 7, QNX и WebOS столь плавны в работе?


Этот пост призван ответить на этот вопрос.

Однако, прежде чем перейти к сути, несколько оговорок. Во-первых, я студент третьего курса специальности «software engineering». Я интернирован в команде Android, и Romain Guy который был ответственен за большую часть работы аппаратного ускорения в Honeycomb, рассмотрел некоторые участки и моего кода, но я не был в команде разрабатывающей сам framework, и я никогда не читал исходники кода отрисовки в Android. У меня нет какого-либо серьёзного авторитета на знание Android и я не могу гарантировать, что я говорю здесь, обязательно на 100% точно, но я сделал все возможное, чтобы аргументировать свои слова.

Во-вторых, я на стажировке в команде Windows Phone, начиная с января, так что вполне возможно, что эта должность могла бы подсознательно настроить меня против Android, но если вы спросите любого из моих друзей, это действительно трудно, попросить меня не болтать об Android. У меня больше Android футболок, чем дней в неделю, и я предпочел бы отдать мой Macbook, чем мой Nexus S. Googlplex это как второй дом. Во всяком случае, мои интересы, пожалуй, смещены в пользу Android.

Итак приступим к анализу предыдущей статьи о мифах (речь идет о полной версии поста Дианы Hackborn).

Диана начинает свой пост удивительным откровением:

«Глядя на рендеринг внутри окна, мы не обязательно должны использовать аппаратное ускорение для достижения полных 60FPS. Это во многом зависит от количества пикселей в дисплее и скорости вашего процессора. Например, у Nexus S нет проблем с 60 кадрами в секунду для всех нормальных вещей которые вы видите в Android UI, как например прокрутка списков на своем 800x480 экране.»

Да ну? Как такое может быть? Любой, кто использовал Nexus S знает, что он замедляется при всем, кроме разве что простого ListViews. И забудьте про любое подобие достойной производительности, если в фоновом режиме, что-то происходит, например установка приложения или обновления пользовательского интерфейса с внутреннего накопителя. С другой стороны, іOS работает на 100% гладко даже при установке приложений. Но мы знаем, Диана не врет о потенциальной производительности центрального процессора, так что же происходит?

Основная причина


Это не паузы из-за сборщика мусора. Это не потому, что Android работает через байт-код, а іOS работает на нативном коде. Это потому, что в iOS рендеринг всего интерфейса происходит в отдельном потоке пользовательского интерфейса в режиме приоритета реального времени. С другой стороны, Android следует традиционной для ПК модели, в которой основной рендеринг происходит с нормальным приоритетом.

Это не абстрактная или академическая разницы. Вы можете увидеть это самостоятельно. Хватайте ближайший iPad или iPhone и открывайте Safari. Начните загрузку сложной веб-страницы, такой как Facebook. На середине загрузки, приложите палец к экрану и подвигайте им вокруг. Вся отрисовка мгновенно останавливается. Сайт просто не будет загружаться, пока вы не уберете палец. Это потому, что поток пользовательского интерфейса перехватывает все события и рендеринг пользовательского интерфейса осуществляется в режиме реального времени.

Если вы повторите это упражнение на Android, вы заметите, что браузер будет пытаться как отрисовать страницу, так и отобразить HTML, т.е. сделать «на отлично» как одно так и другое. Для Android, это тот случай, когда эффективный двухъядерный процессор действительно помогает, поэтому Galaxy S II и славится своей плавностью.

На iOS, когда приложение устанавливается из App Store, а вы приложите палец к экрану, установка мгновенно поставится на паузу, пока рендеринг не будет завершен. Android старается сделать и то и то с одинаковым приоритетом, поэтому частота кадров страдает. Как только вы заметите как это происходит, вы увидите что это повсюду на телефоне Android. Почему прокрутка в приложении «Фильмы» медленная? Поскольку эскизы фильмов динамически добавляются к списку фильмов, когда вы прокручиваете вниз, а вот на iOS они спокойно добавляются только в момент остановки прокрутки.

Несколько людей взялись объяснить ошибки, допущенные мною в упрощенном описании процесса отрисовки в iOS. В частности:

1) Композитинг и пред-настройка анимации — все что включает в себя Core Animation и рендеринг сопутствующих слоев действительно происходит в фоновом потоке.

2) Отрисовка нового контента в слое Core Animation и настройка их анимации происходит в основном потоке. Это то же поток в котором происходит отрисовка пользовательского интерфейса.

3) В нативном коде, весь создаваемый разработчиком код будет происходить в основном потоке. Тем не менее, Apple предлагает очень простой API (Grand Central Dispatch и NSOperation), чтобы переместить эти вещи в управляемые системой фоновые потоки. В iOS 5 можно даже заявить что Core Data (объектно-реляционные базы данных) контекст не может быть использован непосредственно в основном потоке.

Что же мы замечаем? Изображение не отрисовывается пока вы не закончите прокрутку списка, рендеринг страницы в WebKit останавливается, когда система отслеживает прикосновение к экрану, это изначально встроенный механизм, который ставит на паузу весь мир, пока палец на экране.
(На самом деле это не совсем верно: главный поток помещается в специальный режим во время слежения за сенсором, и по умолчанию, определенные обратные вызовы задерживаются в этом режиме. Тем не менее, многие другие вещи, например, загрузка с диска или сетевая активность хранятся полностью в фоновом потоке, не останавливаясь, ничто из этого автоматически не приостанавливается в момент прокрутки. Разработчик должен указать явно задержки для этих вещей). Это преднамеренное поведение тщательно реализовано разработчиком каждого отдельного приложения.

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

Другие причины


Основная причина по которой Android тормозит это структура потоков UI и их приоритетность, но это не единственная причина. Во-первых, аппаратное ускорение, несмотря на оговорки Дианы, все-таки помогает. Мой Nexus S прежде никогда не работал так плавно с момента обновления до ICS [прим.перевод: Мой тоже! :)]. Аппаратное ускорение дает огромную разницу в приложениях, таких как домашний экран и Android Market. Помощь оказанная GPU также увеличивает время автономной работы, потому что графические процессоры — это оборудование с фиксированными функциями, так что они работают с меньшим энергопотреблением.

Во-вторых, вопреки тому что я утверждал ранее, сбор мусора по-прежнему проблема, даже при работе по совместительству с GC в Dalvik. Например, если вы когда-либо использовали приложение фотогалерея в Honeycomb или ICS вы можете удивиться, почему частота кадров такая низкая. Оказывается, частота кадров ограничена числом 30 кадров в секунду, а прокрутка фотографий возможна и при 60 FPS в большинстве случаев, но иногда паузы сборщика мусора приводят к заметному «заиканию». Ограничение частоты кадров до 30 исправляет «заикание» и обеспечивает плавную анимацию все время.

В-третьих, есть проблемы с оборудованием, что также упоминается Дианой. Tegra 2, несмотря на грандиозные претензии от отдела маркетинга Nvidia, наносит ущерб низкой пропускной способности памяти и не имеет поддержки набора инструкций NEON (NEON инструкции в ARM это эквивалент SSE от компании Intel, которые позволяют быстрее рассчитывать матрицы на CPU). Honeycomb таблетки были бы лучше с различными GPU, даже если они были бы теоретически менее мощные в некоторых отношениях, нежели Tegra 2. Например, Samsung Hummingbird в Nexus S или Apple A4. Это говорит нам, что самый быстрый выпущенная Honeycomb планшет, Tab Galaxy 7.7, работает под управлением процессора Exynos с Galaxy S II.

В-четвертых, Android имеет способ перейти на более эффективный композитинг пользовательского интерфейса. в iOS, каждый вид пользовательского интерфейса отображается отдельно и хранится в памяти, так для многих анимаций требуется только GPU для просмотра рекомпозиции пользовательского интерфейса. Графические процессоры очень хороши в этом. К сожалению, на Android, иерархия пользовательского интерфейса уплощена до рендеринга, поэтому анимация требует перерисовки каждого сектора экрана в которой она происходит.

В-пятых, Dalvik VM не так развита, как десктопная JVM. Java печально известна ужасной производительностью GUI на десктопах. Тем не менее, многие вопросы, не переносятся на реализацию Dalvik. Swing был ужасен, потому что являлся кросс-платформенным слоем на вершине родной API. Интересно отметить, что Windows Phone 7 в основной пользовательский интерфейс построен на нативном коде, хотя первоначальный план был — базироваться полностью на Silverlight. В Microsoft в конце концов решили, что для придания интерфейсу необходимой производительности, код должен быть родным. Это легко увидеть разницу между родным и байт-кодом на Windows Phone 7, поскольку сторонние приложения написанных на Silverlight уступает в производительности (Nodo и Mango смягчили эту проблему и Silverlight интерфейсы, как правило, сейчас очень плавные).

К счастью, каждый из пяти вопросов, перечисленных выше, разрешим без радикальных изменений в Android. Аппаратное ускорение будет на всех телефонах под управлением Android ICS, Dalvik продолжает совершенствовать эффективность своего сборщик мусора, Tegra 2, наконец, устареет, есть обходные пути для существующих проблем композиции интерфейса, и Dalvik VM становится быстрее с каждым выпуском. Недавно я спросил Джейсона Кинкейда с TechCrunch, насколько плавной была работа Galaxy Nexus и он ответил:

«В целом я счел ICS по Galaxy Nexus достаточно плавным в работе. Есть случайные заикания — одно место, где я могу получить последовательно испуг на Galaxy Nexus, это когда я нажимаю кнопку многозадачности, где он часто будет приостанавливается ​​на четверть секунды. Тем не менее, я считаю, что iPhone 4S также подтормаживал больше, чем я ожидал, особенно, когда я переходил на доступ к общему поиску приложений (где вы проводите пальцем влево от главного экрана).»

Итак, поехали, проблема тормозов Android в основном решена, не так ли? Не так быстро.

Вперед в будущее


Android UI никогда не будет совершенно плавным из-за конструктивных ограничений, которые мы обсуждали в самом начале:

— Рендеринг интерфейса происходит на главном потоке приложения;
— Рендеринг интерфейса происходит с нормальным приоритетом;

Даже с Galaxy Nexus, или четырехъядерным процессором EeePad Transformer Prime, нет никакого способа, чтобы гарантировать гладкость и приемлемую частоту кадров, если эти два конструктивных ограничения остаются в силе. Это говорит, что мощности Galaxy Nexus хватит чтобы сравнится по плавности работы с первым iPhone трехлетней давности. Так почему же команда Android использовала именно такую структуру рендеринга?

Работа над Android началась еще до выхода iPhone, и на тот момент система Android была разработана, чтобы быть конкурентом Blackberry. В оригинальном прототип Android не было сенсорного экрана. Компромиссы Android имеют смысл устройств с аппаратной клавиатурой и трекболом. И когда вышел iPhone, команда Android бросилась к выпуску конкурента этому продукту, но, к сожалению, было уже слишком поздно, чтобы переписать весь пользовательский интерфейс системы.

Это же самая причина, почему Windows Mobile 6.5, Blackberry OS, Symbian имеют ужасную производительность сенсорного экрана. Как и Android, они не были предназначены для «приоретиризации» рендеринга пользовательского интерфейса. После выпуска iPhone, в RIM, Microsoft, и Nokia отказались от своих мобильных ОС и начали разработку с нуля. Android является единственной мобильной ОС, которая существовала до «эры iPhone».

Так почему же команда Android не изменила существующее положение дел? Я позволю Romain Guy объяснить:

"… Много работы, которую мы должны сделать сегодня, существует из-за определенного выбора, сделанного много лет назад…… С анимацией пользовательского интерфейса самая большая проблема. Мы работаем над другими решениями, чтобы попытаться улучшить её (возможность использования отдельный поток рендеринга, и т.д.). Простое решение, конечно, это создание нового графического инструментария но есть много минусов в этом подходе. "

Ромен не уточняет какие минусы и недостатки в этом решении, но это не сложно предположить:

— Все приложения должны быть переписаны для поддержки новой структуры;
— Android должен будет обеспечить режим поддержки для старых приложений;
— Работа на другие особенностями Android будет приостановлена, до то времени как новая система будет разработана;

Однако я считаю, что написание «с нуля» должно произойти, несмотря на эти минусы и недостатки. Как начинающий менеджер, я считаю, медлительность Android абсолютно неприемлемой. Следует сделать этот вопрос приоритетом №1 для команды Android.

Когда тема Android поднимается как технически подкованными, так и не-технически образованными друзьями, я слышу снова и снова, что Android тормозит и работает медленно. Реальность такова, что Android может открывать приложения и отображать веб-страницы так же быстро или даже быстрее, чем iOS, но восприятие — это всё. Исправление тормозящего UI это будет начало долгого пути, чтобы восстановить репутацию и образ Android.

Восприятие проблемы, тормоза — это нарушение философии компании Google. Google считает, что все должно быть быстрым. Вот ведущая философия Google Search, Gmail, и Chrome. Именно поэтому Google создал SPDY — для улучшения HTTP. Именно поэтому Google создает инструменты, помогающие оптимизировать ваш сайт. Именно поэтому Google запускает свой собственный CDN. Именно поэтому Google Maps отображается при помощи WebGL. Именно поэтому буферизации на Youtube что-то то что большинство из нас хорошо помнит, но видят все реже.

Но, пожалуй, одна наиболее важных причин отставания в интерфейсе Android неприемлемо исходит из области человеко-машинного взаимодействия (HCI). Современные сенсорные экраны предполагают соответствие «один к одному» между пальцем и анимацией на экране. Именно поэтому эффект перепрокрутки в iOS (эластичная резинка) это так здорово, весело, и интуитивно понятно. И именно поэтому сенсорные экраны авиакомпании Virgin America Flights так расстраивают: они невероятно тормозят и очень неточно срабатывают.

Тормоза пользовательского интерфейса прерывают связь человека и сенсорного экрана. Общение с устройством перестает быть естественным. Оно теряет магию. Пользователь исключается из взаимодействия с ними и должен безоговорочно признать, что они используют несовершенное компьютерное моделирование. Я часто «теряюсь» в іPad, но меня аж передергивает, когда Xoom заикается между экранами. 200 миллионов пользователей Android заслуживают лучшего.

И я знаю, они получат это в конечном счете. Команда Android является одной из самых преданных и талантливых команд разработчиков в мире. При таких звезд, как Диана Hackborn и Romain Guy Android находится в хороших руках.

Я надеюсь, что эта публикация сократит путаницу вокруг тормозов Android.
Немного удачи, и Android 5.0 принесет нам плавный Android, о котором мы все мечтали, с момента выхода HTC G1. В то же время, я буду в Редмонде работать над красивой и плавной мобильной ОС, и пытаться дать ей некоторое признание, которого она заслуживает.
Перевод: Andrew Munn
Андрей Kpyto @Kpyto
карма
228,2
рейтинг 0,0
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (244)

  • +138
    Простите, вы не родственник гуглтранслейта? :) очень похож стиль перевода :) мой мозг чуть не сломался, когда я пытался прочитать статью полностью… «я могу получить последовательно испуг» — нечто! :)) я сам испуг чуть не получил последовательно :)
    • +28
      :) я вообще стараюсь обычно не браться за переводы (посмотрите мои предыдущие топики, практически нет топиков-переводов). Просто эта статья мне показалась настолько интересной, что не смог удержаться. Я заранее приношу извинения за ошибки, и прошу отправлять их мне через хабрапочту — буду исправлять максимально быстро. Спасибо заранее!
      • 0
        да я как бы не в упрёк, специально подчеркнул это смайлами :) а статья, конечно же, достойна перевода :)
      • +9
        За перевод действительно спасибо, но ошибок и искусственных словосочетаний так много, что у Вас хабрапочта сломается :)
        • +2
          Я после нон-стоп марафона «перевод с утра (11 часов, топик начинается со слов „добрый день“) и до публикации (в 19 часов)» буду только рад замечаниям, сам сейчас уже не могу более адекватно переписать :)
          • +2
            Попробуйте перечитать текст на свежую голову, ошибок и правда многовато. Но статья интересная.
          • +9
            Просто совет, на будущее: переводите не словами, не фразами и не предложениями, а мыслями. Прочитали предложение оригинала два раза, запомнили суть, убрали оригинал с глаз долой, дописали в перевод самостоятельно.

            Языки отличаются не только алфавитом, словарем и грамматикой, самое главное различие в способе и структуре передачи мыслей. Поэтому, пытаясь переводить дословно, английская калька будет сквозить в каждом словосочетании. Хороший переводчик не просто переводит текст, он переформулирует мысль.
          • 0
            Спасибо за перевод. :)

            Cразу бросаются в глаза многочисленные повторы местоимений.
            «… но я не был в команде, разрабатывающей сам framework[,] и я никогда не читал исходники» (запятые еще :) ),
            «я не могу гарантировать, что я говорю здесь»…
      • +1
        > Сайт будет в буквальном смысле никогда не загружен, пока вы уберете палец.
        Ну вот это вообще…

        Пока вы не уберете палец, сайт не загрузится.
        • +2
          Да, это выражение просто убило. Пытался его прочитать раз десять — не вышло (думал, что со мной что-то не то). Однако, нет.
      • 0
        Статья очень интересная!
        • 0
          Тема оригинального топика — да, интересна. Перевод — в общем и целом хороший, местами машинный какой-то. Но, я думаю, некоторые люди помогут нашему переводчику исправиться.
      • +1
        Честно говоря, в этом случае просто нет смысла писать об ошибках, их слишком много, тут нужно тупо делать вычитку.
    • +13
      Большую часть ошибок глаз благополучно пропустил, но вот при фразе «я интернирован в команде Android» ярко представились концлагеря для программеров :-)
  • +4
    За перевод, хоть и не идеальный, большое спасибо!
  • +1
    А в чем суть картинки? Робот спасается бегством от Росомахи? ;)
    • +6
      Даже росомаха не заставит ваш андроид бегать.

      А вообще печально, нам прямым текстом сказали, что система, без переписывания с нуля, не будет шустрой. Те андроид тупиковая ветка, и мы просто оплачиваем бетатест.
      • 0
        Не система целиком, а пользовательский интерфейс, но в целом это печально, согласен.
        • 0
          Так процентов 70 кода в мобильных прогах составляет интерфейс.
          • 0
            Ну не в самой системе же. Там большая часть наверное Dalvik.
            Тут самое печальное в том что выбор дальнейшей стратегии развития довольно сложный. И так или иначе, Андроид в минусе.
        • 0
          Не только интерфейс.

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

          Немного неразумный порядок действий, не находите?

          PS. Спасибо всем кто анонимо слил мне карму.
          • 0
            Он загружает обновления по расписанию. Что логично.
            И что самое характерное, вот как раз то что вы называете управлением нагрузкой, может быть изменено довольно просто быть может даже в кастомном ROM`е, ибо публичный API это не затрагивает, насколько мне думается. Кстати, а на остальных ОС`ях, такое «управление нагрузкой» реализовано?

            PS: я кармосливами не занимаюсь, тем более анонимно.
            • 0
              Нет, это абсолютно не логично.

              Фоновые и технические задания должны выполняться тогда, когда телефон idle.

              «Может быть легко изменено» — скорее всего согласен. Просто не в курсе технических деталей.
              Только вот уже хрен знает сколько официальный андроид этого сделать не может.

              PS. Те кому надо, знают кому это адресовано.
              • 0
                Не совсем правильно написал в ответе выше.
                Я понимаю, что выполнение служебных и фоновых задач когда телефон в режиме ожидания — лучше, чем то, что есть сейчас. Но и расписание — логично, а раз оно работает до сих пор именно так — инженеры гугл по всей видимости так и считают.
                Надеюсь, что они изменят свое решение, в одном из ближайших обновлений.
                • 0
                  > Но и расписание — логично, а раз оно работает до сих пор именно так — инженеры гугл по всей видимости так и считают.

                  Зная жизнь, люди просто забили болт на это.
              • 0
                Когда андроид в кармане — он спит в большинстве случаев. а вообще, насколько я помню (мой телефон месяц лежал в ремонте, а теперь списан, так что нет шанса проверить), обновление по запросу предусмотрено.
      • 0
        G компания удачных и не очень бетатестов и с этим просто надо смириться)
  • +12
    > Даже с Galaxy Nexus, или четырехъядерным процессором EeePad Transformer Prime, нет никакого способа, чтобы гарантировать гладкость и приемлемую

    Восхитительно. Эпиграф.
    Практически, эпитафия надеждам.
    • –3
      Последний абзац вы вообще значит не читали? Как бы эпиграф обычно вконце статьи, а не в середине
      • 0
        Да я вообще наверное ничего не читал.
      • +2
        Этот? «200 миллионов пользователей Android заслуживают лучшего»
    • +2
      Меня это вообще убило, когда я об этом узнал
    • +1
      Надежды на плавность UI в Nexus S тоже убили
  • +14
    На iOS, когда приложение устанавливается из App Store, а вы приложите палец к экрану, установка мгновенно поставится на паузу, пока рендеринг не будет завершен. Android старается сделать и то и то с одинаковым приоритетом, поэтому частота кадров страдает.


    Восхитительно. Тоесть, когда мне нужно сделать важный звонок и я буду стараться добраться до звонилки под пальбой лагов, ОС будет пытаться обновлять [вырезано] приложения?

    Разумно, ничего не скажешь.
    • +2
      Хм… Если преувеличивать, то да. Но, сер, давайте рассмотрим этот момент реалистично — даже на стареньком, слабеньком HTC Wildfire, с 528мгц процессором, я не вижу никаких серьезных лагов, когда работает обновление + браузер + еще что нибудь.
      • +1
        Я уточню — нет лагов, когда я при всей этой нагрузке открываю звонилку
        • +7
          Если у миллионов пользователей есть, а у вас нет, значит никаких лагов нет, да?
          • +2
            Вы отвечаете за миллионы пользователей? Я только сказал, что с моей точки зрения вы преувеличиваете, так как я не вижу «пальбу лагов» при открытии звонилки.
            • –3
              Вы бы хоть камменты почитали что-ли…
              • +2
                Покажите мне хотя бы один каммент, где человек с нормальным смартфоном, по железу не хуже iPhone имеет жестокие лаги при открытии звонилки? Вот покажите — я признаю что вы правы. Пока я такого не вижу. Заметьте — я не отрицаю, что у Андроид не плавная прокрутка и есть достаточно лагов, но утверждать, что «при открытии звонилки происходит пальба лагов» — это слишком.
                • 0
                  Поэтому я и писал, что вы ГИПЕРБОЛИЗИРУЕТЕ.
                  • –2
                    Не нужно кричать. Вы валерьяночки что-ли попейте.

                    habrahabr.ru/blogs/android_development/134172/#comment_4454668
                    • 0
                      Поймите меня правильно, я не могу согласится с этим комментарием, потому что только что нажал обновить 49 приложений и не увидил лагов (Samsung galaxy tab — самый первый, по процессору вроде HTC Desire). Конечно если у человека какой нибудь HTC Magic, то я не исключаю такого результата.

                      P.S. Предлагаю окончить эту беседу, так как к консенсусу мы не придем.
                      • +4
                        > только что нажал обновить 49 приложений и не увидил

                        Если вы закрываете глаза вокруг темно не становится.

                        У меня флагман, галакси эс, точно так же глючит.
                        Таких отзывов о глюках полно. Прочитайте даже комментарии к этой ветке.
                        То что вы не видите глюков, не означает что их нет.

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

                        Пойдите и расскажите им что никаких лагов нет.

                        • –1
                          >У меня флагман, галакси эс, точно так же глючит.

                          Этот смарт уже давно не флагман.

                          >То что вы не видите глюков, не означает что их нет.

                          То, что их видите вы не значит, что андроид повсеместно лагает. Я говорю то, что я вижу. Подумайте сами — какой идиот будет покупать смартфон, который «умирает» при обновлении программ? Я просто не понимаю, как это возможно. Ваши кучи отзвывов — это пока один комментарий с непонятно каким смартфоном. Давайте не будем посылать друг друга искать отзывы. Я тоже могу щас найти с десяток комментариев о том, что нормально
                          • +6
                            >Пойдите и расскажите им что никаких лагов нет.
                            Прекратите перевирать мои слова. Я написал уже:
                            Заметьте — я не отрицаю, что у Андроид не плавная прокрутка и есть достаточно лагов, но утверждать, что «при открытии звонилки происходит пальба лагов» — это слишком.
                            Прочитали, да? Давайте еще раз, а то с первого раза недоходит, что я ниразу не говорил, что андроид не лагает вообще.
                          • 0
                            Хорошо. Я понял. Андроид никогда и ни у кого не глючит.

                            Исправлюсь.
                            • 0
                              Заметьте — я не отрицаю, что у Андроид не плавная прокрутка и есть достаточно лагов, но утверждать, что «при открытии звонилки происходит пальба лагов» — это слишком.
                              Заметьте — я не отрицаю, что у Андроид не плавная прокрутка и есть достаточно лагов, но утверждать, что «при открытии звонилки происходит пальба лагов» — это слишком.
                              Заметьте — я не отрицаю, что у Андроид не плавная прокрутка и есть достаточно лагов, но утверждать, что «при открытии звонилки происходит пальба лагов» — это слишком.
                            • –4
                              Вы так и не понял, что я написал уже 10 раз? Печально.
                              • –2
                                Цитируйте внимательней:
                                Ваше: при открытии звонилки происходит пальба лагов
                                Ориг: буду стараться добраться до звонилки под пальбой лагов

                        • +1
                          У меня флагман Galaxy S2. При прокрутке списков в ланчере иногда бывает задержка между первым движением пальца и первым изменением картинки (начало скрола).
                          Как-то ВСЁ!
                          Больше нигде ничего и никогда не лагает.

                          Как правило открыта опера с парой влкдок, живые обои, пара виджетов типа календаря, быстрых контактов, списка задач, погоды, виджет для конторля заряда батареи.

                          До него была спика (I5700-GT он же Galaxy Spica) — на дроиде 1.5 вообще никаких лагов. На родном 2.1 работать вообще было не возможно — о плавности не было и речи.
                          Перешил на спикаген, потом на цианоген. Плавности добавилось весьма серьезно, проблем с входящими звонками как не было, так и не появилось, но при наборе номера телефон отставал иногда на пару секунд. Т.е. я уже 5 цифр набрал, а на экране пусто. Потом брык — набрались первые три из них.
                          Вот это да — напрягало.

                          Но опять же — хуавэи по 300 баксов работают плавнее, чем HTC Wildfire… (на работе есть 2 фаната хуавэев)
                          • 0
                            Тоесть, чтобы андроид нормально работал в нем надо колупаться отвёрткой, доставлять непонятные РОМы и т.д.
                            Ок.
                            • 0
                              К сожалению, совсем не ок.
                              но что поделать… на то она и открытая платформа, чтобы можно было засунуть отвертку.
                              а про спику вообще анекдот есть. мол все юзеры делятся на яблокофилов, виндофономанов, андроидолюбов и спиководов.
                • +6
                  У меня iPhone 2G
                  Его железо по современным меркам — ниже плинтуса.
                  Так вот даже по сравнению с ним, поведение относительно бюджетного андроид-смартфона, железо которого в разы производетельнее — один сплошной лаг (да, я пользовался, не просто так говорю)
                  • –1
                    Я не являюсь пользователем iPhone 2G, но наблюдал за женщиной в маршрутке, пока ехал в сервис. Так вот у неё интерфейс лагал по полной, скролы между экранами были ужасны возникало ощущение, что это не iPhone. Вопрос почему?
                    • 0
                      Вариант 1: это китайфон.
                      Вариант 2: стоит довольно много приложений, и прошивка => 3.1.3 (т.е. сама 3.1.3 либо любая из 4й серии).

                      Действительно совсем не быстро работает. Вернее, действительно ужасно работает. Правда, контакты и иные списки скроллятся, несмотря ни на что, безо всяких подтормаживаний.
                      • 0
                        максимальная прошивка на 2Ж — 3.1.3. У меня стоит — проблем нет.
                        Хотя да, засрать можно и айфон так что он начнет тупить, наверное
                        • 0
                          У меня начал тупить точнехонько в день анонса iOs 5.0. И строка пикселов выгорела.
                      • 0
                        Вариант 3: это джейлбрекнутый телефон, со старой прошивкой.
                      • 0
                        Не обязательно китайфон или много приложений. Куда вероятнее джейлбрейк и «кастомизация» из Cydia, всякие там Winterboard и прочие радости — качеством они, мягко говоря, не блещут.
                • +1
                  У меня Palm Veer, по железу превсходящий iPhone 3GS. Но вот тормоза всего и вся, в особенности прокрутки.
                • 0
                  у меня LG p970, процессор 1Гц (одноядерный)
                  сравниваю с iphone 4s жены и понимаю — в следующий раз куплю iPhone.
                  Тормозит мой Android безбожно, если его не перезагружать очень долго (как виндовс 98). Например: я нажимаю в последних набранных — позвонить… не звонит...3 раза нажал и он позвонил ТРИ раза, последовательно. А бывает так: надо позвонить, а при этом работают яндекс карты, нажимаю «позвонить» и жду чёрный экран 5 секунд, бесит очень сильно.
      • +9
        На HTC Wildfire даже не всегда получается принять звонок из-за тормозов!
        Причём никаких там фоновых приложений и т.п., даже интернета на нём нет — телефон просто лежит в кармане, раздаётся звонок, а кнопка принятия вызова не реагирует!

        Если хочешь навсегда отвратить человека от андроида — подари ему HTC Wildfire :)
        • –1
          Вы все врете, Kyborg2011 знает что это не может быть!!! У него все работает!
        • +8
          На HTC Wildfire даже не всегда получается принять звонок из-за тормозов!

          Подтверждаю =)
        • +3
          На Samsung Galaxy Gio ровно то же самое,
          т.е. вывод: репутацию андроиду портят телефоны с дешевым процессором (в данном случае — арм 6).
          • –3
            Наконец-то адекватный коммент, а не выкрики типа: «пальба лагов при обновлении приложений». Браво.
          • 0
            У вас какие-то странные выводы.

            четырехъядерным процессором EeePad Transformer Prime, нет никакого способа, чтобы гарантировать гладкость и приемлемую частоту кадров
            • +3
              Не слишком плавное листание фоточек (о чем заметка) — это очень небольшая проблема в сравнении с ситуацией когда внезапно не можешь принять звонок из-за того, что телефон в момент вызова продолжительно ни на что не реагирует (о чем комментарий, на который я и отвечал).
              • –2
                Собственно да. Если фоновые процессы блокируют телефон то это простите труба.
          • +2
            »»(в данном случае — арм 6)
            — iphone 2G на этом процессоре живет и работает замечательно. Так что не в процессоре дело
            • –2
              оффтопик: Дело было не в машине, долбограй сидел в кабине. /оффтопик.
            • +4
              Не могу согласиться. У меня был 3G, вот там у меня примерно каждый третий звонок невозможно было принять, после обновления на 4.0.1. На 4.2.1 стало значительно лучше, но все равно не без изъяна. HD2 с цианогеном значительно быстрее.

              У андроида, такое ощущение, проблема лагов в большей степени — в прошивках производителей. MIUI, CM, AOSP — работают вполне неплохо.
              • 0
                Такая же проблема с 3G на 4.0.1.
                Причём, никаких обновлений не качалось и вообще аппарат не был ничем загружен.
          • 0
            backflip с AMR6 и оперативки мало. Лагов практически нет, появляются лишь при недостатке памяти а её аж 256. борюсь раздачей больших приоритетов приоритетным с моей точки зрения приложениям, а не с точки зрения гугла. К примеру когда я звоню, мне совсем не нужно чтобы maps запускались. и тд

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

            ах, да… при обновлении лучше положить тихонько в сторонку ) И вообще...«не было печали… да обновления скачали»
        • 0
          Это да, обидно немного из-за таких лагов, но вайлдфайр меня от андроида никак не отвернул, наоборот) первый андроид и явно не последний)
        • 0
          Отказался через полгода, купил Xperia Ray, доволен. Wildfire просто выбросил, натерпелся, не могу больше.
          • +1
            А скажите, куда выбросили?
        • 0
          Lg gt540, тоже самое.
        • 0
          есть подозрение, что дело в гламурном сенсе… попробуй поставить вместо него например go launcher
        • 0
          Wildfire S. Такая же проблема)
    • 0
      Будет. Но поскольку это фоновое приложение — с низким приоритетом.
    • 0
      Увы, в iOS 5 скопировали из Android не только экран уведомлений и целых два виджета, но и тормоза и глюки :(
      На Android меня жутко раздражало, когда выключаешь режим самолёта, чтобы позвонить, а он начинает разом скачивать и устанавливать десяток приложений (почему-то проверка в маркете активировалась всегда именно в этот момент) — минут на пять-десять минут телефон с двухъядерным процессором можно отложить до окончания тормозов.
      Я с ностальгией вспоминал свой iPhone 3G, в котором таких проблем не было, и думал, что вот выйдет новый айфон, и я навсегда избавлюсь от тормозов…

      Так вот, в iOS 5 обновление приложений происходит так же одновременно, как и в андроиде, и когда оно обновляется, тормозит даже хвалёный эппловский интерфейс :(
      • –2
        Дебилизм.
      • –5
        Вы все врете, Eternalko знает что это не может быть!!! У него все работает!
      • +2
        Хм, а вы не пробовали отключить автоматическое обновление? Лично я не заметил никаких отличий в скорости работы от iOS4 (крутится на iPhone 4). Меня ваш коммент как-то удивил даже.
        • +1
          Предлагаете не обновляться, чтобы не было тормозов при обновлении? :)
          Или обновлять ручками все программы по одной?
          • +3
            Зачем так радикально? Лично у меня аппстор просто информирует о том, что обновления доступны, но не кидается из все устанавливать. Таким образом я не получаю ВНЕЗАПНО!!! обновляемые программы, тысячи их при выключении авиа-режима.
            Да и даже при обновляющихся программах спокойно играл в далеко не легенький Infinity Blade без тормозов.
            У вас какой аппарат?
            • +2
              LG P990. «Флагман» 2011-го года. Продаю. Несколько дней назад для него наконец-то вышла прошлогодняя версия ОС — 2.3.4. Теперь аппарат работает совершенно без глюков, и все мои стоившие последней кармы комментарии в блогах LG и Android по поводу глюков, потери настроек, зависаний, внезапных отключений экрана и ребутов прошу считать устаревшими :)
              Но я обновления не дождался и теперь свои жалобы на глюки пишу прямиком в раздел «iPhone 4S» на сайте discussions.apple.com — там нет задержки на написание сообщений и друзья по несчастью иногда помогают дельными советами :)
              • 0
                Я вас что-то не понял. Вы жалуетесь на iOS5, но у вас при этом Андроид. Как так? оО
                • +1
                  У человека не может быть одновременно iOS5 и Андроид? :)
                  У меня сейчас два андроида (LG P990 и ZTE Blade, продам недорого) и от двух до пяти устройств с айос5.
                  • 0
                    Может, но отвечая на вопрос «какой у вас аппарат» в ветке про тормоза в iOS «у меня %androidphonename%» вы вгоняете собеседника в ступор.
                    • +1
                      Прочитайте ветку с начала — там цитата, что в iOS всё кучеряво, в то время как в Anrdoid — тормоза. Я написал, что это не так, и в iOS с пятой версии теперь тормоза, как в Android. Впрочем, вызваны они не тормозным GUI, а одновременным обновлением пары десятков приложений.

                      Если вы подразумеваете ваш первый комментарий в этой ветке, и вы имели в виду не Android, а iOS5 в сравнении с iOS4, то где в iOS вообще автоматические обновления? Я их не видел, обновляться всегда приходится вручную с вводом пароля.
                      • 0
                        Блин, как-то упустил пару слов и неправильно понял комментарий и сам же запутался. Виноват.
                        • +2
                          Ничего, бывает, я запутался ещё пару часов назад — хотел ёлку нарядить, а вместо этого на хабре какую-то фигню про мобилы пишу.
                          • –4
                            Спасибо. Вы меня от души рассмешили :)
        • 0
          А где можно включить автообновление?
          • 0
            Настройки / Магазин / Автоматические загрузки — наверное, здесь. Откровенно говоря, я как-то не озадачивался вопросом включения автообновления.
      • 0
        вроде бы в iOS5 сделали, чтобы устанавливались/обновлялись одновременно только 2 программы, до этого было 1 ед.

        + возможно труба ещё лезет в iCloud синхронизироваться.
    • 0
      На О1 зачастую приходилось жать звонилку до 5 секунд. А чтоб трубку поднять, иногда и того дольше (копка просто некоторое время не реагировала на нажатие). Вообще, Яблоко правильно все придумали.
  • –1
    Осталось только сравнить скорость выполнения того же кода в Dalvik VS Native Code.

    Уверен, что различия в скорости выполнения будут в разы. Если не в десятки раз.
    Ставлю 5 баксов против одного.

    • –1
      Я боюсь, что даже в разы не будет. Проблема не в управляемом коде — его можно сделать столь же быстрым, как и неуправляемый. Проблема в слоях абстракции, которые, наворачиваясь вокруг каркаса приложения, делают каждое действие максимально запутанным и сложным.
      • –1
        Не надо бояться.
        Аж из любопытства вбил в гугл: Dalvik VS Native Code.

        Первые ссылки:
        marakana.com/forums/android/examples/96.html
        code.google.com/p/android-benchmarks/

        Разница в скорости — порядки.
        • +1
          там графики очень древние с тех пор только то что я знаю JIT + not stop world GC который в отдельном потоке, только эти две вещи должны сократить отставание в разы. Или вы думаете прям они там ерундой маются.
          • –1
            У меня новее тестов нет. У вас есть?
            • +2
              Так если у вас нет, так чего вы так уверенно утверждаете? Какие эмоциональные сообщения, а факты всего лишь в графиках годовой давности.
              • –2
                > Так если у вас нет, так чего вы так уверенно утверждаете?

                вы пожалуйста не приписывайте мне свои домыслы.

                > Уверен, что различия в скорости выполнения будут в разы. Если не в десятки раз.
                Ставлю 5 баксов против одного.

                У вас есть шанс заработать.
                • +1
                  Вы я смотрю не помните что пишите? Ваш коммент:

                  Я вам переведу: Сраный дальвик работает в 10 раз медленней чем должен. В 10 раз медленней чем Джава. Об чем тут можно говорить? Это факт. Если для вас это не тормоз, то для меня да.
                  Дело вкуса, знаете ли.

                  Тоесть вы на 100% утверждаете. заметьте — вы не пишите — возможно, вы именно утверждаете. Видите разницу?
                  • –3
                    У меня есть цифры на руках. У вас нет. Свободны.
                    • +1
                      У вас есть цифры годовой давности. Они не котируются. Свободны.
                      • +1
                        Только что скачал программу NDKTest на Gingerbread.
                        Различая в скорости в 10-20 раз.

                        Интересно как это выглядит на ICS.
                        • 0
                          ТС проверил на скорость на ICS.
                          Различия в скорости опять же: 10-20 раз.
                      • +4
                        Цифры годовой давности — уже не цифры? О_о
            • 0
              нет, но сборщик мусора который не останавливает выполнение программы а выполняется паралельно+ дает разницу в паузах от сотен мс до едва порядка одного десятка. JIT тоже ускоряет очень сильно выполнение. Эти два улучшение дают ощутимый прирост. Единственное JIT жаден к памяти. Имеет смысл на конфигурациях от 512 мегабайт ОЗУ и выше. Даже на galaxy S он применятся не интенсивно. В 3.0 и 4.0 тоже было много улучшений.
        • +5
          То что вы сравниваете навряд ли интересно.
          Я переписывал большую библиотеку рендеринга используя Native Code VS Dalvik.
          Native code работал со Skia (http://code.google.com/p/skia/) напрямую, то есть Dalvik Canvas вообще не использовалась, а Dalvik работал с обычной canvas.

          На андроид 2.1 без GPU получил прирост самый большой 2-4 раза. После андроида 2.2, когда улучшили JIT и в телефонах появились GPU, некоторые жалуются, что вообще не сильно заметили ускорения, а в целом 1.5-2 раза.

          Просто когда начинал переписывать тоже читал много статей о том, что сортировка работает в 10-20 раз быстрее :) Хрен, только сортировка.

          Запросы на которых тестировал выполняются от 2-30 секунд, что достаточно для того, чтобы ощутить порядок.
          P.S.: наверное через год вообще выкину нафиг этот native, одни проблемы с конфигурацией, а Android действительно молодцы много делают для улучшения Dalvik (JIT, hardware acceleration).
          • 0
            новый gc в 2.3 как повлиял?
          • 0
            Вот это замечание по существу.
            Итого, один и тот же код выполняется с какой разницей в скоростях?

            Или вы не проверяли?
            • +3
              Проверок очень много было, но именно не лабораторных, а реальных.
              Естественно код выполняет абсолютно одно и тоже + на C++ я оптимизировал как мог (как знал) + на С++ нету GC :)
              HTC Wildfire дал самый заметный прирост (2.1 по-моему) от — 3-4 раз
              HTC Hero — 2-3 раза.
              HTC Desire — 1.5 -2 раза
              чем лучше устройство тем меньше разница :)
              Отрисовка очень зависит от количества отрисовываемых данных, для того, чтобы оценить специфику приложения, речь идет о долгой отрисовке!
              Примеры: 1 секунда, 2, 3, 5, 10 и иногда даже 20 при очень больших данных (на Wildfire). Поэтому GC занимает < 1% не существенно.

              Проблема в том, что рисование через Dalvik Canvas уже имеет очень много нативных методов к Skia! Да что-то теряется на переходе JNI, но не много :(

              Canvas самый быстрый Java способ для отрисовки на экране! В принципе все к нему сводится в Android. Потом появился Native, а сейчас широко распространяется RenderScript с LLVM оптимизацией. Но все это не решит проблем 60 FPS и отзывчивости User Interface, как абсолютно правильно замечает автор!
              • 0
                Спасибо.
              • 0
                Речь об osmand?
                Думаю там ещё раз в 10 можно ускорить вывод, пример google maps с векторами перед глазами.
    • 0
      И это абсолютно не мешает написанию нормальных приложений на Dalvik. По аналогии — если переписать, например, Eclipse или Idea на С++, то скорость наверняка увеличится, но это абсолютно не мешает популярности этих IDE.
      • –4
        Не нужно аналогий. Все проще: Андроид (сердечко) Далвик (равно) тормоза.
        • 0
          Вы хотите начать спор насчет Java vs C/C++...? Все прекрасно знают, что нейтив код работает быстрее (чаще всего), но это как бы не сильно мешает.
          • –5
            Вы хотя бы пробовали понять написанное?

            Я вам переведу: Сраный дальвик работает в 10 раз медленней чем должен. В 10 раз медленней чем Джава. Об чем тут можно говорить? Это факт. Если для вас это не тормоз, то для меня да.
            Дело вкуса, знаете ли.
            • 0
              Да прочитайте уже комментарии habrahabr.ru/blogs/android_development/134172/#comment_4454773
              habrahabr.ru/blogs/android_development/134172/#comment_4454756.

              А потом еще напишите пару сложных приложений на C++ и сравните их с такими же приложениями на Java. Все знают, что Java медленее, но пишут на ней возможно больше, чем на C++. Почему?

              • 0
                Вы меня простите, но как мне было прочитать комментарий который был написан после того как я написал свой?
  • +11
    Спасибо за статью. Надо отдать разработчикам Apple должное: приоритет прорисовки интерфейса на уровне ОС — это сильно. Ориентация на пользователей, в хорошем смысле.
  • +3
    Вот так новость, оказывается, андроид тормозит. После перехода на него с WM6 даже не задумывался о таком положении дел. IT-мир жесток…
    • +11
      А вы думаете, откуда у iOS столько поклонников?
  • +1
    Любопытно, какие шансы портировать WebOS на изначально андроидо-фоны? На тот же hd2, например, на который какой только зоопарк ОС не ставят.
    • 0
      Ну если аналогичные или похожие по хардверу будут и найдут способ подменить загрузчик.
  • НЛО прилетело и опубликовало эту надпись здесь
    • +2
      Подозреваю, это не так просто.
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          Если вынести рендеринг в отдельный поток и повысить ему приоритет, то мы как раз и избавимся от конструктивных ограничений :)
          • +1
            Забываете, что было написано, что работает как система реального времени. А это я уже думаю относится к Linux ядру. Надо бы посмотреть, есть ли там конструктивные ограничения.

            — Рендеринг интерфейса происходит на главном потоке приложения.
            Просто уверен, что решат, потому что уже начали. Сейчас все контролы будут рендерить в DisplayList (то есть типа SVG элемента — сжатая графика), а уже потом их будут переносить на экран.

            Хотя, главный поток, это единственный поток, где можно работать с UI! За исключением если вы рисуете на Canvas и вызываете tryLock. Здесь могут возникнуть конструктивные ограничения. Я к тому, что приложения переписывать многие придется :)
      • 0
        Вот интересно, есть процессы, что будет если я сейчас сделаю renice для системных процессов и поставлю высокий приоритет? Потом забить это в .sh скрипт и сделать автозапуск. Не подскажите какие процессы править?
  • –3
    автор статьи умница, но копает не там.
    есть Android от Самсунга, есть от HTC и т.д. У каждого девайса свой Android с наворотами и багами, со специфичными только на нем тормозами. И ничего не сделаешь, ибо политика у гугла такая — открытость и никакой сертификации. У основных конкурентов все наоборот.
    • +5
      Самсунг htc и другие производители меняют темы интерфейса, значки и т.д. но не методы отрисовки дисплея или API.
      баги как правило связаны с чем
      -ланчеры не заточены для ускорения через GPU
      -встроенный софт занимает много оперативы или ест проц в фоне.
      -криво написаны драйвера
      Так вот если бы приоритет интерфейса был высоким и в реальном времени, тогда вся эта нагрузка не тормозила бы значительно интерфейс. Это хотел сказать автор а не все глюки разных производителей.
      • +1
        я внимательно читал, спасибо. но боюсь вы не в теме, это отнюдь не иконки и виджеты.
      • 0
        Ну, например, нативных реализаций для MediaPlayer в Андроиде существует не одна, и разные вендоры используют разный код. Так что и bug-set для каждого девайса свой. Поэтому можно считать, что и API затронут, если приходится писать воркэраунды, чтобы не получить по рукам граблями конкретного девайса.
        • +1
          При этом все реализации МПлеера — говно, а аудиотракт в андроиде — худший из всех, о котором программисты только слышали, пожалуй (из современных мобильных ос).
          • 0
            Не подскажете где об этом можно подробнее прочитать?
            (Я всегда считал что качество аудиотракта определяется ЦАП-ом который используется)
            • –1
              Программная реализация, буфер, методы доступа к нему и прочие свистоперделки — говно, а уж чип — какой производитель поставит. Можете у habrahabr.ru/users/Kyborg2011/ спросить, сколько там геморроя.
    • +1
      А есть ещё от LG, который по сумме багов затмит Samsung и HTC вместе взятые.
      Но тормоза интерфейса у всех андроидов, увы, наследственные от Гугла, и вендоры ничего изменить не смогут, разве что добавить мегагерц и ядер процессору и мегабайт в оперативную память.
      • 0
        c LG не знаком, а вот с двумя упомянутыми — очень даже. как-то Galaxy Tab обновился до 2.3.5 и после чего начали падать все приложения, даже почта и галерея. обвинял бы сейчас Android, если бы не телефон HTC, на котором нет ни глюков, ни тормозов с такой же прошивкой.
      • 0
        Это все равно не поможет, потому что гуйня не приоритетна :)
  • 0
    из-за определенного выбора, сделанного много лет назад…… С анимацией пользовательского интерфейса самая большая проблема


    Перевожу на русский:
    Мы когда делали, головой не думали, поэтому получилось фигня. Исправить ее теперь не можем.
    • +5
      это называется не с той ноги встал ).
      а Джобс молодец всетаки, установил приоритет куда надо, и миллионны людей думают что iOS быстрая операционка.
      • 0
        Это было сделано еще в первых OSX, когда графику выделили в отдельный поток с приоритетом выше всех
    • 0
      Сегодня все считают, что телефоном надо пользоваться двумя руками и это правильно, а завтра эппл выпустит третью механическую руку и это будет революцией. Всё предсказать сложно.
    • 0
      Не логично же. Вам ясно сказали, что когда писался Андроид — он не имел сенсорного интерфейса, где отрисовка интерфейса имела бы столь высокий приоритет.
      Позже, было необходимо быстро переписать его под сенсор и было решено, что механизм отрисовки допустимо оставить таким какой он есть. Да, это был не самый лучший выбор, но тогда он таким не казался.

      Вот о чем вся статья, столько много букв, чтобы сказать, что Андроид тормозит, не потому, что он кривой, а потому, что в некоторых местах неправильно(для сегодняшних реалий) поставлены приоритеты.
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          Нет, это называется — нельзя всего знать заранее. К тому же не все криво, а только система интерфейса.
          • НЛО прилетело и опубликовало эту надпись здесь
            • 0
              С этим согласен. Возможно я не совсем верно отреагировал на слово «кривой», причислив его к Андроиду в целом.
          • 0
            Кнопочки или сенсор никакой роли не играет.
            Управление телефоном блокируется когда он нагружен. Телефон тупо затыкается и даже не пробует дозировать нагрузку.
            • 0
              Не в том дело.

              Когда телефон кнопочный — в приоритете выполнение операции. Когда сенсор — взаимодействие с пользователем.

              Почему? Просто потому, что на кнопочном телефоне не бывает такого активного взаимодействия. Вот например на андроиде можно одним движением пролистать от начала до конца список из 100+ элементов, а на кнопочном это физически невозможно. Так почти со всем интерфейсом. Просто другой подход.

              Далее исходя из статьи(краткий пересказ):
              На системах изначально «пальцевых», в приоритете именно взаимодействие интерфейса и пользователя, то-есть считается, что когда пользователь работает с интерфейсом — нужно в первую очередь позволить ему это сделать. На Андроиде же — нагрузка распределяется равномерно, и «затыкается» он потому, что пытается одновременно выполнять все действия. А «пальцевые» системы, притормозили бы все остальное, позволив пользователю выполнить действия с интерфейсом.
              • 0
                Суть моего комментария: телефон не пробует дозировать нагрузку.

                Это нехорошо.

                • 0
                  С этим не спорю, и надеюсь что это исправить проще чем переписывать UI часть, и будет решено в патчах.
                  • +1
                    Уже который год ждем. Им похоже просто наплевать.
        • 0
          Хотя вообще, извиняюсь, спорить не хочу, ибо не имею достаточной квалификации в вопросе, выводы делал из статьи.
  • +2
    Тем не менее ICS это уже что-то похожее на то что ждут пользователи. Ждем «желейных бобов» (новая версия андроида) через полгодика) И трансфорер прайм, и galaxy nexus лучшее из того что было с точки зрения плавности). И да, по поводу обновлений. Никогда не понимал почему нельзя ограничить число одновременно устанавливаемых программ. Если у тебя около 20 программ и ты нажимаешь «обновить все» система просто умирает. Это не поменять приоритет рендеринга. Это просто ограничить число устанавливаемых программ!
    • 0
      Мне вот интересно, что это за аппарат? Если система просто умирает, то это уже как то слишком…
      • +5
        LG P990 — двухъядерный гигагерцовый процессор. Умирает уже на десяти одновременно устанавливаемых программах.
        Ну он не то чтобы совсем умирает… но через раз реагирует на нажатия, а fps падает с обычных 10 до 1-2 — Джобс за такое программерскому тимлиду сердце вырывал и заставлял программеров его съесть, а в Гугле шефы добренькие.
        • +4
          Джобс за такое программерскому тимлиду сердце вырывал и заставлял программеров его съесть
          Блин это сильно :)
        • 0
          Мда. Что-то не так в датском королевстве.
          • 0
            Ну примерно по таким причинам Winmobile сдохла. Пора уже гуглу задумываться и делать наконец что-то современное с нуля.
            • 0
              Либо Андроид до ума довести.
              • +1
                Ага, выкинув всё, кроме linux ядра и заменив на стандартный linux стек + systemd + wayland + dbus + lsb + freedesktop.org + возможность нормальной нативной разработки софта.

                • 0
                  Радикально так)
                  • +2
                    Меня не радует система, которая болт кладет на стандарты.
        • 0
          до ios5 одновременно устанавливалось 1 программа, с приходом 5-ки, 2 программы :)

          такое иногда бесило, но теперь понимаю, что это лучше, чем не реагирующий аппарат :)
          • 0
            Лучше вообще пусть демон себе ставит что надо, а ему из магазина просто отдаются команды на установку, которые он запоминает. Всё равно больше, чем в один поток, ставить что-то на флеш память смысла нет никакого!
  • –3
    у него galaxy S. Я с ним в предыдущем топике пересекался. Похоже на выдумки единственная проблема бывает это когда очень много проблем и очень долго не обновлялся. Когда штук двадцать программ начинают ломится в твой девайс. Потверждаю девайс находится в эти моменты на грани смерти.
  • +1
  • 0
    Просто нужно понимать и другое. Я недавно взял low end сматфон samsung с маленьким разрешением. Он просто летал. Андроид действительно динозавр, и пилят его на ходу. Гораздо проще закопать все что было, и сделать все по новой. Как сделал майкрософт. Андроид же делает нечто похожее на то что делал майкрософт со своим виндоуз. Подерживает программы которые написаны под старые платформы. Тянет зависимости. Пилит на ходу. 4.0 Это миниум для того что бы называться современной ОС в 2011. В 2012 будет желейный боб в котором обещали нечто. Посмотрим.
  • +2
    Несмотря ни на что, даже на iOS гуй тупит иногда и в маркете есть проги с откровенно тормозным скроллингом. По ходу решить эту проблему без гуи потока на отдельном ядре и хорошей культуры разработки приложений не реально. Обычно же проги данные обрабатывают в том же потоке, что и происходит рендеринг. А даже если рендеринг идет средствами GPU, им все равно нужно как-то управлять!
    ЗЫ
    И все-таки скорость гуя в Андроиде почти такая же отвратительная, как и в Симбиане. Хотя спасибо Андроиду за гонку гигагерц и памяти на мобилках, за счет него телефоны реально стали мощными.
  • +3
    Что-то не укладывается в голове. Откуда взялись эти fps при перерисовке интерфейса? Я в жизни не слышал термин fps, применимый к GUI операционной системы (да и в отношении других вещей слышал это в основом от маркетинговых отделов Nvidia и студий). Какой, нафиг, отдельный поток рендерига, какая, к лешему, видеоакселерация, когда вообще ListView или WebView превратились в трехмерные комьютерные игрушки?! Почему бы просто не отрисовывать эти контролы на чертовых 480/720 строках матрицы, как это спокойно делалось 20МГц компьютерами без всяких ядер?
    • +3
      На 20 мегагерцах никто не делал плавный скроллинг, он в общем-то рывками происходил. При любой операции гуй тогда фризился а почему? Да потому, что всё выполнялось в одном потоке.
      Насчет видеоакселерации что быстрее? Попросить видеокарту жалкий буфер подвинуть на пару пикселей или же подвинуть его средствами центрального процессора, гоняя этот буфер взад и вперёд, как делается это без аппаратного ускорения. А тут ведь ещё какое дело. Ведь жаба же не может напрямую обращаться к видеокарте, она это делает через нативную libGL, итого ещё возникает оверхед на неявные нативные вызовы из жабакода и обратно. Хотя интересно, JIT же должен уметь это все оптимизировать?
      Короче говоря, если вы хотите быстрый гуй, то вся отрисовка должна быть полностью нативной, а интерпретируемой должна оставаться лишь логика и разметка интерфейса.
      Ну и в целом, скорее всего, просто никто в андроиде всерьез не заморачивается над скоростью и энергосбережением. Народ то хоть и зудит, но всё равно покупает. Расслабились разработчики короче.
      • –1
        По делом.
        • 0
          Вот ещё добавка почему даже аппаратное ускорение не всегда будет спасать.
          www.javamex.com/tutorials/jni/overhead.shtml
          • 0
            Я ничего не понял. Не программист. Так понимаю, если вызывать нэйтив код из далвика, то далвик все равно будет кушать кучу ресурсов?
            • 0
              Он не сможет себе позволить многие оптимизации, доступные при компиляции в нативный код. Они могут быть весьма существенными, особенно в openGL вызовах.
              • 0
                Понятно.
      • +2
        Короче говоря, если вы хотите быстрый гуй, то вся отрисовка должна быть полностью нативной, а интерпретируемой должна оставаться лишь логика и разметка интерфейса.
        здравствуй Windows Phone 7
        • +1
          Ну или MeeGo, или iOS, в общем, все остальные платформы.
      • 0
        Вы так говорите, будет плавный скроллинг 307200 пикселей — кошмар какая ресурсоемкая задача :).

        никто в андроиде всерьез не заморачивается над скоростью и энергосбережением

        Вот с этим согласен полностью. That simple. Вместо каких-то космических теорий о fps и потоках.
      • 0
        вспоминаю свой Palm III, тогда на 16 (вроде) МГц вполне себе работала плавная прокрутка. И вообще, помнится, ничего особо не тормозило и все программы легко влезали в 4Мб оперативной памяти. Ну это такой, больше ностальгический момент, ибо сравнивать как-то некорректно, у палма дисплей 160x160x4, а у новых девайсов 800x480x16m и больше.

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

        Поэтому, как программист, невольно задумываюсь о том, что принципиально мешает сделать «как раньше» сейчас? Характеристики железа улучшились в десятки раз, а предлагаемые возможности и их качество — едва ли существенно.
        • 0
          «как програмист» задумывайтесь еще. 800х480х32 > 160x160x4 в 120 раз. И 16МГц*120 > 1 гигагерца в современных мобилках. Один только буфер экрана не влезет в 4 мегабайта палма 3.
  • +18
    > Android UI никогда не будет совершенно плавным из-за конструктивных ограничений, которые мы обсуждали в самом начале:

    > Даже с Galaxy Nexus, или четырехъядерным процессором EeePad Transformer Prime, нет никакого способа, чтобы гарантировать гладкость и приемлемую частоту кадров

    Блин, а когда я говорю, что Андроид субъективно тормозит, мне все ставят минусы :))
    • +2
      Та же фигня.
      Еще и в карму нагадали. Ну что за люди? (:

      Вместо того чтобы сказать: «блин, есть проблема» начинается жуткий холливар и крики «так не бывает, у вас руки кривые, у меня не тормозит».

      Помнится, лет так с 8-10 назад, сторонники процессоров АМД (когда АМД были более гиковским решением, которое иногда надо было «тонко» настраивать) точно так же себя вели. Помнится, какая-то модель процессора сильно тормозила. Сильно грелась.

      Цитата АМД любителя, практически дословная:
      Да, у меня тоже такой проц был. Но у меня комп разобранный и я на боковой радиатор клал мокрую тряпку. И тогда процессор лучше охлаждался и ком шустро летал.

      И смех и грех.
      • +1
        В одной из презентаций видел: вы считаете себя нерелигиозным поколением по сравнению с нами, стариками, но долстаточно завсети спор «Мак против PC», и вся религиозность — как на ладони :) То же относится, естественно, к любым другим холиварам :)
        • +2
          И только сиськи всех объединяют. Ну или… почти всех (:
      • +4
        Ой, да ладно. 10 лет назад когда Интел выпустила свой убогий П4, АМД К7 вполне составляли им конкуренцию. При этом работали на меньшей частоте, меньше грелись и дешевле стоили. Спустя пару лет, выпустили Athlon64, и тогда уже всем стало ясно, что Интел отстаёт технологически. Быстрые и холодные К8 отобрали технологическое лидерство у Интел.

        Интел пришлось приложить массу усилий «честной конкуренции», чтоб не допустить экспансию АМД на рынок. За что, спустя нескольких лет и была оштрафована в размере более 1 Млрд. долларов. Но это было уже после того, как они перехватили пальму первенства у АМД.

        А Пентиум 4 был на столько «удачным» процессором, что после него Интел всерьёз задумывалась закрыть торговую марку Пентиум, но так как ТМ была сильно раскручена, решили оставить её для бюджетных процессоров.
        С тех пор, конечно многое изменилось, после выпуска Core 2 Duo, Интел вернул себе технологическое лидерство, и довольно быстро прогрессировал. И сейчас Интел выпускает самые лучшие процессоры, по всем параметрам.

        Сори за оффтоп. Вспомнил былые времена.
        • 0
          Спасибо за гайд (:
        • 0
          Самые лучшие по всем параметрам? Отнюдь, мой препод по организации ЭВМ отводит им роль печатной машинки, не более, в прочем, и АМД тоже.
          • 0
            Так правильно делает, x86 — сборище костылей и подпорок, которое работает вопреки здравому смыслу.
          • 0
            Самые мощные супер компьютеры в мире построены на базе «обычных» процессоров АМД и Интел. Нет более мощных процессоров, которые работали бы на другой архитектуре.
            Сейчас начинают использовать GPU для взятия новых рекордов скорости. Но всё же, процессоры в них достаточно просты и подходят не для всех задач, и выигрывают только своим количеством.
            • 0
              Ну в общем-то еще есть:
              1) POWER7 (IBM)
              2) Производные от SPARC64
              Вполне себе неплохие камешки.
              Впрочем в супер компьютерах важен не один процессор, а возможность работы многих.
        • +1
          Угу составлял. На амдэ К7 даже яйца жарили и испаритель для самогона делали. Чего только не делали… Было у меня в то время несколько десктопов на более дешевых АМД, вообще все системники всегда были на АМД. А потом я перестал пользоваться десктопами, и ноут на АМД — да ну страхово, у одного знакомого постоянно грелся а потом сгорел, поколение около core2duo, которое тоже нифига не прохладное было
          • 0
            Очень корректное замечание. У К7 не было защиты от перегрева, и если их запустить без радиатора, они разогревались до очень высоких температур. И если положить фольгу на процессор вместо кулера, вполне можно было попробовать и пожарить.
            Но П4 при этом потребляли больше и больше грелись, другое дело, что их нельзя было разогреть до больших температур. Они эффективно боролись с температурой, активно тротля и жузжа своими громкими вентиляторами.

            С ноутбуками, ситуация такая, что если их не разбирать раз в год-два и не чистить от забившейся пыли в радиатор, то они все будут сильно греться и пытаться сгореть. И не важно какой там процессор внутри, всем нужно охлаждение, а мелкие радиаторы достаточно быстро забиваются пылью. И долезть к ним чтоб очистить, иногда очень тяжело.
    • –1
      > Блин, а когда я говорю, что Андроид субъективно тормозит, мне все ставят минусы :))

      Это очень хорошо, что так говорите. Ибо подавляющее большинство тупо орет с выпученными глазами «ТОРМОЗАААА!1». Хотя на самом деле не тормоза, а подергивания. Скорость же исполнения действий пользователя — как-то набрать номер и позвонить, набрать смс и позвонить, открыть почтовый клиент и открыть письмо — вполне нормальная.
  • 0
    А в чем фишка того же Launcher Pro, который даже на старых телефонах просто летает (в сравнении со стандартным лаунчером)? Как он работает и решает эту проблему?
  • 0
    А у меня андройд не тормозит. Я — везунчик?
    • 0
      Аналогично, удивился когда был указан Nexus S. У меня эта игрушка (в CDMA-варианте), и ничего не тормозит… что я делаю неправильно?
    • +3
      Может вы просто не держали его рядом с последним айфоном?
    • 0
      Если пользуетесь более полугода то наверное да.
    • 0
      Когда у меня был LG Optimus One — всё довольно прилично тормозило. Недавно приобрёл Samsung Galaxy R — никаких тормозов. Рабочие столы прокручиваются плавно и приятно, приложения запускаются без подвисаний, прокрутка в приложениях плавная. Любые игры летают, без всяких тормозов. Много раз держал в руках Айфон 4 — теперь могу сказать, что по взаимодействию с интерфейсом Galaxy R такой же приятный телефон, разницы с айфоном никакой не чувствуется абсолютно.

      Так что мораль проста — не ждите, что телефон со слабым железом будет работать плавно и без тормозов.
      • –1
        Будет интересно услышать ваше мнение через пол года.
    • +4
      везунчйк
  • 0
    Есть же кастомные сборки Андроида из исходников, неужели никто не пытался залочить процесс GUI по максимуму? Отличная вещица получилась бы, и плевать на другие тормоза, лишь бы интерфейс летал.
    • 0
      Поставить ядро с BFS патчем? А что, интересная идея!
      • 0
        Почти под каждый более-менее популярный телефон уже есть ядра с кастомными скедулерами и различными твиками
  • 0
    Не понимаю о чем говорится в статье. На телефоне (с той самой тегрой 2, которую в статье ругают) видел тормоза отрисовки только в двух случаях: при скролле полупрозрачного меню на фоне трехмерных анимированных обоев и при выключении телефона, когда экран блюрится. Всё.
    • –2
      Какой срок пользования? Месяцев 6 есть?
      • 0
        Телефоном — нету. А что, со временем телефон превращается в тыкву?
        Зато есть ~8месяцев пользования китайской таблеткой на проце 1.2ггц, там таких эффектов нету, но есть довольно редкие заикания, вероятно, из-за китайской прошивки и ядра, от которого китайцы не дают исходников
  • +10
    Пользователей Андроида не убедить, что GUI в их системе притормаживает даже откровениями разрабочиков самой системы.
    Ну ок.
    • +2
      Понимаете слово подтормаживает абсолютно некорректное и только ведет к холиварам!

      Если бы вы сказали не достигается 30 FPS! Или каждую 5 секунду скорость падает до 10 FPS а то и до 1 FPS. Или соответствие пальца (!) указателя при скролле, карте отстает на 200 мс в тестируемом промежутке. Думаю некоторые люди с вами согласились, некоторые так и не поняли как узнать, а некоторые не поняли о чем идет речь.

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

      Существует другая категория людей, которая жалуется, что я запустил тут закачку, тут браузер, тут еще фильм смотрю и что-то у меня UI тормозит. Тут как было замечано в статье Айфон тупо все отрубит, чтобы UI не тормозил, а Андроид тупо все ресурсы поделит. Ну 2 точки зрения имеют право на жизнь :) Некоторым людям Андроид стратегия может и приемлимее, подождать 5 секунд, зато браузер быстрее загрузится.
      • +4
        Вот кстати помнится, меня едва ли не больше всего в iOS бесило именно такое поведение. Запускаю браузер, открываю страничку, инет медленный — думаю, переключусь-ка на читалку, почитаю минутку, и обратно. И через минуту загрузка продолжается ровно с того же места, где я ее оставил.
  • +2
    Четыре трубки сменил, прежде чем понял, что это семейное. Две средних и два топа. Полтора года ушло на эти, а мне никто не верил и не замечал этого.
  • –1
    Понятно. Покупаю новый айфон.
  • 0
    Ну тормозит и тормозит себе. В каких-то модельях больше, в каких-то меньше. В SGS2, говорят вобще не тормозит.
    На самом деле, это же не единственный критерий выбора Андроид. Если не считать эплофобов, есть огромное число людей, которое не готово платить за айфон 650$+. И вот тут встаёт вопрос, что же можно взять за меньшие деньги?

    Windows Mobile — ну тут понятно, трупь.

    Simbian — тут вобщем тоже всё понятно.

    Meego — да и тут всё понятно, хотя сейчас можно и попользоваться немного 1 моделью.

    Windows Phone 7 — ну как, вроде как у платформы задумка правильная, и двигаются в правильном направлении, и денег в неё бухают огого. Но интерфейс весьма странный, и всё же сыровата. Я верю, с неё выйдет что-то хорошее, но не сейчас. Может через годик, она будет интересней.

    WebOS — трупь.

    Остаётся только Андроид, который вполне себе хорош. Современный, быстро развивающийся, ну не без недостатков, но они стараются стать лучше. И главное, устройства на нём, стоят от 100$. И охватывает огромный ценовой диапазон, на все вкусы. Это не плохо, да есть свои сложности, но именно цена, сейчас позволят этой ОС так активно расти. Да, есть и мего трубки на Андроиде, которые хотят продавать дороже айфонов, но для этого используется маркетинг полным ходом. Ставят огромные экраны, которые приходится двумя руками держать. 5,3 дюйма, шутка ли? Процессоров по больше, в январе будут показывать 4х ядерные телефоны, и не важно что они не используются, главное по больше, чтоб легче впарить. Ну и корпус чтоб самый тонкий в мире, правда приходится вставлять и аккумулятор по меньше. 6 часов проработает и хорошо. Зато очень большой экран, очень много ядер, и очень тонкий. Покупатели этого и хотят, для них и делают. Что-то меня понесло :)

    Я к тому, что пока Аппле не выпустила свой бюджетный айфон, Андроид ждёт безоблачное развитие, и вариантов то всё равно нету. Либо дорогой айфон, или любой андроид. А у эппла, айфон и так разлетается как горячие пирожки, и продаётся с огромной прибылью и выпускать бюджетный телефон, видимо не видит смысла.
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Тут говорится об отдельном потоке с повышенным приоритетом, что уже уменьшит тормоза, ибо обработка интерфейса будет более приоритетна чем остальное.
      К тому же предлагается нечто более радикальное, в виде изменения работы механизма отрисовки UI, при котором остальные приложения на время работы UI будут «приостанавливаться», что кстати логично, ибо когда я листаю список, я хочу листать список, и мне все равно, что ко времени загрузки обновления очередной проги из маркета прибавится 0.05сек, которые я потратил на взаимодействие с интерфейсом. Как то так.
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          Однако тут все хвалят подход iOS, в которой по словам комментаторов все реализовано именно так. Я вот, вообще не решаюсь что либо утверждать, ибо не знаю всех тонкостей.
          • НЛО прилетело и опубликовало эту надпись здесь
            • 0
              Я же говорил, что ничего не утверждаю. Делаю выводы из комментариев.
            • 0
              Поэтому нельзя давать производить сразу несколько дисковых операций одновременно. Флеш память на это просто не расчитана, при многопоточной записи она начинает дико тупить.
              А чтобы этого избегать нужно API сделать удобное и правильное. Такого я так понимаю в Андроиде нет.
              • НЛО прилетело и опубликовало эту надпись здесь
                • 0
                  Когда они с одинаковым приоритетом и рулятся с одного процессора — то прямая.
  • +1
    спасибо, очень давно интересовала проблема тормозов в Андроиде =)
  • –5
    А мне пофиг что «притормаживает», зато не еппл :-)
    • –2
      Любители самого вкусного плода на земле, зачем же срать в карму?
  • +2
    да, лаги с GUI в андроиде есть, я это хорошо прочувствовал на спике два года назад. Сейчас же, после перехода на дизаер и miui, лагов я практически не замечаю. Как бы я не любил андроид, стоит признать, что iPhone на этом фронте конечно победитель, здесь и обсуждать нечего. Но с другой стороны, для меня это всего лишь вопрос эстетики и он перекрывается полностью вопросом функциональности.
  • +4
    Последний азбац улыбнул.
    «Вы е*****ь со своими Андроидом, ждите 5.0, а я буду в Редмонде улучшать и так быструю Windows Phone, в которой изначально это продумано».
  • +1
    Прочел оригинал. Третьекурсник (пускай ему и больше лет, чем нашим 3-екурам) очень грамотно все написал. Легкая зависть, что человек проходит практику в таких компаниях. Вот это настоящая учеба!
  • 0
    Пост ненависти и в тоже время любви к Android.
  • 0
    По теме. Во время разработки сервисов доступа к данным в приложении всегда ставлю им приоритет THREAD_PRIORITY_BACKGROUND, это значительно, повторюсь, значительно улучшает производительность UI. Проверено уже не на одном проекте :)
  • 0
    Про буферизацию ютуба скажите это моему мерзкому МТС брелоку, выдающему летом в 3км от Одинцово и 20км от москвы почти диалапные 120Кб\сек, выделенкой пахнет только за 16к, вафля из соседнего города 10к и 3500р в мес за 50МБ, так что с ютубом по аккуратней в следующий раз пжлст
  • –2
    У меня на смартфоне CyanogenMod 9 и он не тормозит и не лагает. Что я делаю не так?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.