Объявление

Хотите приглашение на сайт? Пишите: niikto@samovarchik.info


 

В своё  время очень понравилась статья про тормоза интерфейса Android в сравнении с iOs айфонов: Вкратце, там говорилось что у iOS приоритет на отображение, и любой поток может затупить, но только не поток рендеринга интерфейса. У Android (как и у старых систем Symbian, WM, ..) не так, - у них лишь приоритет дан рендерингу, но он может тормозить.

http://habrahabr.ru/post/134172/

Любой, кто использовал 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 они спокойно добавляются только в момент остановки прокрутки...

А тут на хабре устроили холивар про недовольство этими самыми "лагами", подтормаживаниями интерфейса даже самых производительных железок на Андройде: http://habrahabr.ru/post/169695/
приведу оттуда подборку вырезок...

недавно у двоих знакомых появилась Lumia 920. Такой солидный, сурьезный аппарат. Я говорю — давайте устроим тест, тормозит, или нет. Запустили на iPhone 4 и на Lumia 920 приложение Яндекс.Метро и стали одной рукой елозить туда-сюда по обоим подопытным. На iPhone карта всегда следовала за пальцем, совершенно не отставая. На двухядерном WP8 карта летала за пальцем как «на резинке», отставая ровно на шаг — палец вверх, а она, повторяя прошлое движение, летит вниз, затем наоборот. И что думаете оба этих человека сказали? «Это реализация приложения такая».
...Печаль, что кроме сервелата ничего нет. Я вот портирую кое что на сервелат, так просто переписывание кода с c# на c++ даёт выигрыш в 3.5 раза. Оригинальный код писал сотрудник МС трудно его заподозрить в криворукости, да и профайлер говорит что 95% времени тратится внутри библиотеки. А на мобилке это превращается в разницу в 35 раз ( разница между c# на PC и на WP — 10 раз).
...лова про замечательную жизнь Windows Phone — миф евангелистов и маркетологов. Как дело доходит до реальных тестов, то WP сливается, уступая массе Андроедов. Если сравнивать, например, флагманы HTC и Nokia, то преимущество будет именно у флагмана HTC:
Nokia Lumia 920 (Windows Phone 8) - http://www.gsmarena.com/nokia_lumia_920-review-858.php
HTC Droid DNA (Android 4.1 Jelly Bean) - http://www.gsmarena.com/htc_droid_dna-review-853.php

по данным Арены: 4с-аунэкс
  Режим разговора: 7 ч 41 м — 9 ч 57 м
  Браузинг: 6 ч 56 м — 4 ч 18 м
  Просмотр видео: 9 ч 24 м — 5 ч 45 м
То есть в режиме только телефон, HTC живёт дольше из-за более жирного аккумулятора, как только в дело вступает собственно ОС, iOS выше наголову.


... Родовая травма, лечимая только костылями.
В 4.2 синхронизировали рендеринг так, чтобы подтормаживания не были заметны, а с версии 4.0 можно включить принудительный аппаратный рендеринг.
...А можно чуть-чуть подробнее про «включить принудительный аппаратный рендеринг»?
...В настройках в разделе «для разработчиков». У меня в этом режиме некорректно стилус работает в некоторых программах.
...да, общеизвестно что 4.1 сделал андроид гораздо плавнее и шустрее. У меня есть Nexus 7 и Huawei Mediapad. Второй вроде ... не хуже нексуса «на бумаге», но просто на голову хуже «на практике».
...Насчёт скорости — Самсы тоже были 4.0 и после совсем недавнего перехода на 4.1 вроде стали гораздо пошустрее (по слухам; сам не проверял).
...Покрайней мере почти всё что вы описали очень прилично работает на Google Nexus линейке, VPN, Почта корпоративная (Exchange Server), браузер Chrome лагов не заметно. Может конечно в стоковом клиенте Почта который не для Gmail и нету некоторых удобных фич но и с почтой только с телефона или планшета не приходится работать.
...После обновления Sony Xperia S до андроид 4, он стал притормаживать. Загрузка чего угодно занимает 1-3 секунды. Нужно позвонить, нажымаешь на кнопку набора номера и ждешь 3 секунды пока подгрузится список звонков и клавиатура.
...Android 4.2 (AOSP), Nexus S — не скажу, что все идеально, но пользоваться можно без мата, аппарат все же старый, еще времен 2.3.*.
   Android 4.2 (AOSP), Galaxy Nexus — все летает. Ни одного лага с момента релиза версии замечено не было.
   Батарейку второй держит достойно (у первого она убита) — 3G + метро + музыка в мониторных ушах = 1 день.
...Ну, я лаги обычно замечаю даже самые небольшие, с тех пор как начал работать на макбуке. А рядом стоит неттоп на атоме с убунтой. Второй нервы мне треплет изрядно, хотя я на нем только фильмы смотрю и слушаю музыку. А раньше нормально на нем работал.
... если 2-х ядерный процессор не в состоянии оживить интерфейс моего телефона, так чтобы он просто не тормозил и залипал — мне не нужен такой телефон.
...а у меня 4.2.2 на 600Мгц-процессоре и ничего не тормозит, не глючит и пр. (LG P500)
...на 600 Мгц встанет аднроид 4?
... Да. И работает он пошустрее 2.* [ну этому я не верю - 4.0 тормознее 2.x на одном устройстве HTC, неуж то sense виноват?]
...У меня уже ныне не новенький LG P500 и я никакого дискомфорта не испытываю, сейчас поставил Cyanogen mod 7 и нарадоваться не могу. Никаких тормозов не ощущаю, пользуюсь телефоном очень активно [а может он очень любит свой смартфон и готов ему многое простить?]

По теме: у меня два Android девайса, Nexus 7 и Philips w732. Модификации прошивки, кастомные ядра, рут-доступ и прочее — совершенно не обо мне, хочу чтобы устройство работало «из коробки».
   Первым покупал Нексус. Филипс покупал потому, что нужен был двухсимочный смартфон, хотя в андроиде к тому времени уже дико разочаровался и понимал, что покупаю себе источник проблем. Самое интересное: на большинстве потребительских задач (почта, скайп (!), браузер, звонки и sms) одноядерный китайский Филипс работает быстрее и стабильнее, чем крутой Нексус. Этого объяснить не могу никак.
   Баги, конечно, у планшета такие, что к 4 версии ОС и к 2013 году выпускать в продакшен нельзя. Например, если остается свободными меньше 3 ГБ внутренней памяти, скорость работы дико падает (подтверждено тематическими форумами, не зависит от ядра и прошивки. Свопиться некуда несчастному. Как программист понимаю, но это же надо решать для потребительского устройства!), у самых популярных браузеров иногда просто отказываются открываться вкладки и прочее.
... У меня аналогичная проблема на нексус 7, при заполнении памяти дикие тормоза, поставьте faux ядро faux.androidro.ms/grouper/beta/ будете ОЧЕНЬ сильно впечатлены скоростью работы устройства.
...Эта проблема свойственна первым партиям нексусов, какой то глюк с контроллером SSD, при заполнении на 80% сильно падает скорость записи, это хорошо видно в Antutu benchmark. Faux ядро использует твики для ssd контроллера в результате которых скорость даже возрастает по сравнению со стоковым ядром при низком заполнении.
...ОС, как её задумывал разработчик, только в смартфонах и планшетах Google Nexus. Всё остальное — дистрибутивы на базе.
...Например, я пользовался 2 года Nexus S и полностью разделяю мнение автора статьи.

...именно оптимизации почти никто из вендоров внимания не уделяет. Тот же Google феноменально сел в лужу с Nexus 4, когда выяснилось, что ребята из LG подсуетились и вставили старые версии драйверов для SoC, из-за чего Nexus 4 садился просто моментально, перегревался, лагал и тупил. И вот только сейчас вроде они подогнали обновление. Спустя 3 с хреном месяца.
Так что, если вас черт дергает покупать Android-устройство, убедитесь перед покупкой, что у него есть возможность открытия загрузчика, есть обеспечение исходными кодами ядра и нужными бинарниками, а также сообщество потолще. Проверить это можно банально — пойти на get.cm. Если в списке устройство есть, то можно брать, в конце концов баги можно напильником от сообщества выправить. И желательно не связываться с NVIDIA, отдавая предпочтение чипам от Texas Instruments и Qualcomm. Они в плане работы с сообществом подобрее. Ну а Samsung пока на испытательном сроке.
  лечится именно сторонними прошивками. Это выражается как в виртуальных попугаях, которые увеличиваются порою процентов на 30, так и UX. Лаги, подергивания и глюки пропадают. Хотя, опять же, кастомы не панацея. Там тоже подводных камней хватает, так как вендоры придумывают иногда и прикольные фишки (типа многооконности на самсунгах), но в AOSP их реализовать проблематично.

     А 4.2 для Philips W732 не водится нигде?
Не знаю, смотрите на xda-developers, rootzwiki или 4pda

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

попробуйте iOS
   Последний раз, когда я возился с этим чудом консьюмеризма, я так и не понял, как я могу загрузить отцу видеоролик. NFС оно не умеет, по usb файлы копировать не умеет, под линуксом itunes не работает, по http (!) загрузить файл отказалось.
        после джейлбрейка всё это становится возможным. Ну, кроме айтюнза под линуксом и NFC


а под Андроид есть приложение для соцсетей уровня Gravity? То, что я видел (официальные клиенты Facebook, Twitter, сторонние) — это какой-то ужас по сравнению гравити.
   Это единственное приложение на симбиан, которое я купил в свое время. Казалось что оно опередило время лет на 5.
   Plume?
   Для тви есть роскошная twicca.

А вот про истощение пула случайных чисел, которое тоже тормозит UI Android: http://habrahabr.ru/post/164881/

...
И в статье и в оригинале написано:

    В старых версиях Android некоторые системные компоненты и JVM активно...

Теперь некоторые моменты:
— WiFi, https, (ре)сортировка Hash, таких классов как Map или List (для того же Cache) и т.д. активно используют ГСЧ;
— Гуй использует системные компоненты… дальше понятно;
— Рута оно требует кстати, потому что подругому писать в /dev/random из /dev/urandom не получится;
— Зачем ставить Seeder на android 4.0, где все это уже пофиксено, к тому же ясно же сказано «в старых версиях»?

Теперь факты:
— Мой старый рутованый G1, Cyanogen 7.0 (SetCPU performance/maximum) — после установки Seeder просто летает, там где раньше просто ползал. Но не везде…
— На другие свои андроид устройства ставить не буду — за ненадобностью.
— Упомянутые многими комментирующими разработчики андроида могут идти лесом, т.к. к труппе xda-developers у меня гораздо больше доверия — они по крайней мере используют и поддерживают старые устройства. В отличии от Гугла и производителей, которые забили на пользователей используют и развивают только флагманы.

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

time dd if=/dev/random of=/tmp/rnd.txt bs=1 count=128

под вмварой за NAT — real 7m6.553s (!!!) (это у меня терпение лопнуло и я начал пробел нажимать)
на арм 200mhz (много чего сетевого на нем) — real 0m 42.37s
на dual xeon — real 2m3.688s (дофига пользователей)

Кто сделает /dev/random benchmark app?


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


Вы считаете что позициию «к пуговицам претензии есть?» правильной?
Получается что те кто критиковал андроид за фрагментацию таки правы.

С текущий /dev/random — даже если _все_ приложения будут вести себя «корректно» можно набрать критическую массу когда /dev/random не будет справляться (не считая того что сервер который начнет корректно дробать https может неожиданно усугубить ситуацию на стороне клиента).

Счас, если тормозит — ждать не надо — надо пальцем водить по экрану или громкость тапать )

...
Ну тоесть это нормально, что текущий софтовый генератор на 4х десктопных ядрах, при минимизации внешних событий 128 случайных байт «считает» более 7 минут?

Вам шашечки или ехать? В смысле непредсказуемость или скорость?
Хотите быстро — использует псевдослучайные генераторы, коих море (начиная с urandom).
Откуда система должна брать исходные данные? Там даже жёсткого диска нет со сколько-либо случайным временем доступа. Суровая объективная реальность.


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

Посмотрите как печально работает qrngd — все потому что /dev/random такой какой он есть.
...


http://habrahabr.ru/post/134003/ - Разработчик Google развеивает мифы о «полном аппаратном ускорении» в Ice Cream Sandwich

провел сравнительный анализ IPhone4 и какого-то последнего Android. Стоит сказать, что у андроида есть 3 момента.
1) Время от времени появляющиеся заметные тормоза.
Это скорее всего сборщик мусора, хотя вполне может быть прогноз погоды обновился. Сборщик мусора до какого-то андроида вообще блокировал все потоки, по-моему в 3.0 он стал параллельным. Конечно есть еще криворукость программистов, которая создает огромное количество объектов из-за чего часто запускается сборщик мусора. А если учесть, что все приложения ограничены 16 Мб (!) памяти, то понятно что это усугубляет проблему.

2) Визуальные эффекты тормозов и артефакты анимации. На самом деле это заметно при скроллинге текста, создается ощущение расплываемости текста. Именно поэтому кажется, что Iphone работает четче. Конечно может быть виновата и хардварная часть (сэкономили на экране), видел на некоторых дешевых телефонах, что все отрисовывается по скорости нормально, но некоторые элементы текста расплывается.
Хотя тут тонкость в самом механизме отрисовки. В IPhone это обычный OpenGL везде. То есть либо рисуется весь экран либо не рисуется. Получается если достичь приемлимого 40FPS, то все будет казаться плавным. При чем важно если промежутки между отрисовкой будут постоянными. Это даже важнее количества фреймов, устройство может считать и быстрее — эффект кино. В Андроиде модель эффективная, но не для анимации. Модель как Windows окно -> Layout -> invalidateRect. В общем получается, что некоторые части Android просто не перерисовывает, а некоторые такое ощущение перерисовывает очень часто. Из-за этого возникает ощущение что текст плывет! Хотя на самом деле он не тормозит, а наоборот очень часто перерисовывается. Но что еще хуже рывками! Особенно скроллинг, обычная анимация (прогрес-бар) выглядит получше.

3) Google vs Apple программисты. Ну пора уже смириться, что Гугл не нанимает программистов для работы с анимацией, да и вообще их программисты с дизайнерами не очень дружат. Потому что можно и в Android все вылизать так, что будет работать изумительно. Но нет же сразу бросается в глаза, что IPhone алгоритм анимации скролинга, какой-то не обычный и поведение физики непонятное. То есть при маленьких скоростях наблюдается отсутствие трения, как на хорошем, «дорогом» бильярдном столе :) А у Андроида все проще AcceleratingDecelerating. Кто работал с анимацией-физикой поймет какой это колоссальный труд и Гугла нет на это времени и желания :)

...Паралельный сборщик уже в 2.3. Размер приложения далеко не 16 мб уже давно, сейчас есть уже 48. Про анимацию ничего не скажу.



Просто тут много людей опыт андроида у которых до 2.3. Начиная с 2.3 и до 4 версии идет целая серия улучшений направленных на перфоманс. А есть еще серия бюджетных телефонов и телефонов среднего диапазона 2010 года, которые поступили в продажу просто без драйверов видеоускорителя :-( ну тут ничего кроме возврата не могу посоветовать, это откровенное хамство где андроид стал заложником ажиотажа и производители закрывали спрос чем попало. Сейчас с этим получше. И новые бюджетники порой лучше подогнаны чем мой топ 2010 года.

...Когда тебе надо срочно позвонить а эта скотина зависает, потом перезагружется, и вместо того чтобы наконец-то дать возможность звонить начинает «сканировать медиа» чем еще оттягивает время. Брр.Простите, накипело :(

Я игрался с ипадом. Единственное, где Galaxy Tab в сравнении с ним тормозит — это HTML5 Canvas, имхо, что меня очень сильно огорчает

надо не играться, а владеть. на выходных сравнивал качество просмотра поста с лепры который содержит сотни картинок и анимированных гиф. на ipad2 и galaxy tab 10.1 основой измерения служили скорость скролла страницы + рендера, итого выигрыш ipad-а был 2:1. и это с прошивкой 4.3, а если поставить 5.0, где у браузера нет tiled рендеринга, то боюсь даже представить

Реально зайдите в любой магазин где можно положить рядом друг с другом ipad и любой андроид планшет и сравните какая разница в плавности переключения между рабочими столами. Это самая наинативнейшая функция, так вот даже она «из коробки» отрабатывается не плавно. Андроид — планшет, имхо, очень сырой продукт.

+ про смс-ки которые открываются минуту на HTC Wildfire: http://habrahabr.ru/post/134003/#comment_4451994

Итак, затронутые проблемы:
У Андройда рендеринг интерфейса идёт совместно с остальными потоками (а у iOS - в отдельном потоке), кроме того когда у iOS этот поток в приоритете реального времени (тронешь экран и всё остальное замерзнет, смартфон всё внимание переведёт к твоим действиям с экраном), то у Андройд у потока рендеринга нормальный приоритет. То же касается установки программ и обновлений.

Дальше, есть уборка мусора (GC), которая порисходит на фоне и тормозит интерфейс,

и есть эффект от замены генератора случайных чисел на псевдослучайный

И в андройде есть обновления по расписанию, а не грамотно управляя нагрузкой (когда пользователь не пользуется смартфоном)

Например на iOS одновременно устанавливается/обновляется только 1 программа (в iOS5 - уже 2), в Андройде одновременно 10-20, (LG P990 с 2-ядерным гигагерцовым CPU ложится при 10-ти одновременных). В самолёте отключаеш автономный режим, и они все кидаются обновляться - жди 5-10 минут... выглядит это неприятно.

Редактировался ktokto (18.02.2013, 15:15:28)

 

Дизайн сайта отсутствует
оформление: Группа «САМОВАРчик»

[ Сгенерировано за 0.013 сек, 12 запросов выполнено - Использовано памяти: 1.99 MiB (Пик: 2.05 MiB) ]