pashaspb

Пикабушник
поставил 474 плюса и 42 минуса
отредактировал 0 постов
проголосовал за 0 редактирований
Награды:
10 лет на Пикабу
14К рейтинг 0 подписчиков 2 подписки 124 поста 22 в горячем

В штабе РВСН

— Главнокомандующий поставил задачу сократить штаты на 20 процентов. Начальник штаба, Ваши предложения?
— Я считаю, что начать надо с Техаса, Аляски и Флориды…

Главная проблема жизни

Думаю, каждый из нас был в подобной ситуации
Главная проблема жизни Думаю, каждый из нас был в подобной ситуации

Любимый мультик!

Любимый мультик!

Танкистам привет

Вот такой приятный рандом сегодня :)
Танкистам привет Вот такой приятный рандом сегодня :)

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

Основная причина:
Это не паузы из-за сборщика мусора. Это не потому, что 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 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.
Продолжение внутри..
Показать полностью

О верности собак

Уже несколько лет главной достопримечательностью Тольятти считается не только гигант "АвтоВАЗ", но и малоприметный памятник собаке на окраине Автозаводского района. Семь лет верный пес ждал своих погибших в автокатастрофе хозяев на улице города…
Его впервые заметили на обочине дороги в далеком 1995 году. Некрупная, плотно сложенная овчарка с визгом кидалась под колеса встречных автомобилей. Машины уезжали, а собака оставалась. Она, преданная и любящая душа, не знала, что те, кого она так отчаянно ждет, не вернутся к ней никогда.
Летом 1995 года, незадолго до появления собаки на Южном шоссе, на том же самом месте произошла автокатастрофа. Автомобиль вишневого цвета, в котором молодожены возвращались из свадебного путешествия, столкнулась со встречной машиной. Из всех пассажиров невредимым остался только пес. Во время удара собаку просто выкинуло из автомобиля. Молодая жена умерла еще до приезда врачей. Спустя несколько часов в реанимации умер и мужчина. А собака так и осталась ждать его на том месте, где в последний раз видела живым.
Пес не бросил хозяина. Точнее то место, где видел его в последний раз. Он ждал, ждал, что хозяин придет. 7 лет, в жару и холод, пес охранял последнее пристанище своего хозяина. Только через несколько месяцев грязного, ободранного пса заметили местные жители. Псу дали кличку Константин ("постоянный", "верный"). Все ждали, что еще немного - и пес забудет о случившемся. Но каждый день он снова и снова бросался на встречные автомобили. Причем выбирал именно вишневые "девятки": "Хозяин вернулся!". Но автомобили проносились мимо.
Когда его мертвого нашли в лесу, стали говорить о том, что Костик угодил под колеса большого "КамАЗа", и водитель, испугавшись народного гнева, таким образом "скрыл улики". Но никаких следов насильственной смерти не обнаружилось. Собаки часто уходят, почуяв приближение смерти, чтобы не погибать на глазах своих хозяев. Так и Верный ушел в лес, чтобы хозяин, вернувшись, не увидел его мертвым. Пес был уверен: рано или поздно хозяин придет. Не может не прийти. И поэтому ждал до последнего…
Эта была прискорбная новость для всех горожан, пса очень любили и он на какое-то время смог стать живой легендой города. За неимением средств и самоличной инициативой, в память о псе жители поставили у обочины дороги мемориальный щит с надписью: «Псу, научившему нас любви и преданности». С этих дней он стал символом Тольятти и предметом подражания верности своим любящим хозяевам. Этот щит постоянно сдувало ветром и его часто ломали вандалы. Тогда общественность города Тольятти вышла с инициативой поставить Константину настоящий бронзовый памятник. Памятник, по сути, не псу предназначен больше, а самим людям. Чтобы помнили. Собрали 250 тысяч. Ульяновский скульптор Олег Клюев изваял в бронзе собаку. В 2003 году, в День города Тольятти памятник установили. И теперь на обочине застыл уже не живой, а бронзовый пес. Скульптура высотой полтора метра установлена на гранитном постаменте так, что у проезжающих по Южному шоссе создается впечатление, что собака поворачивает голову вслед проезжающими мимо автомобилям.
PS. любите братьев наших меньших
Показать полностью

Россия :)

Питерские поймут :) Станция не "Финляндский вокзал", а "Площадь Ленина" :)
Россия :) Питерские поймут :) Станция не "Финляндский вокзал", а "Площадь Ленина" :)

Страну подписывать?)

СПБ ГУТ, 701 кабинет :)
Страну подписывать?) СПБ ГУТ, 701 кабинет :)
Отличная работа, все прочитано!