- 浏览: 301851 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
ggwang:
谢谢分享!
如何释放Ubuntu多余的空间?如何给Ubuntu扩容(install inside windows)? -
allenshao:
只有放枪咯~~~~~
Google Group Android Developers 无法打开的问题 -
malong26:
也打不开~~~
Google Group Android Developers 无法打开的问题 -
songshuang:
一直喂它会一直吃是不?
用你的鼠标逗逗它 -
allenshao:
现在基本上用免费的VPN,缺点是限流量。
如何访问appspot网站?
The Root Cause
It’s not GC pauses. It’s not because Android runs bytecode and iOS runs native code. It’s because on iOS all UI rendering occurs in a dedicated UI thread with real-time priority
. On the other hand, Android follows the traditional PC model of rendering occurring on the main thread with normal priority.
This
is a not an abstract or academic difference. You can see it for
yourself. Grab your closest iPad or iPhone and open Safari. Start
loading a complex web page like Facebook. Half way through loading, put
your finger on the screen and move it around. All rendering instantly
stops. The website will literally never load until you remove your
finger. This is because the UI thread is intercepting all events and
rendering the UI at real-time priority.
If you repeat this
exercise on Android, you’ll notice that the browser will attempt to both
animate the page and render the HTML, and do an ‘ok’ job at both. On
Android, this a case where an efficient dual core processor really
helps, which is why the Galaxy S II is famous for its smoothness.
On
iOS when an app is installing from the app store and you put your
finger on the screen, the installation instantly pauses until all
rendering is finished. Android tries to do both at the same priority, so
the frame rate suffers. Once you notice this happening, you’ll see it
everywhere on an Android phone. Why is scrolling in the Movies app slow?
Because movie cover thumbnails are dynamically added to the movie list
as you scroll down, while on iOS they are lazily added after all
scrolling stops.
Other Reasons
The fundamental reason Android is laggy is
UI rendering threading and priority, but it’s not the only reason.
First, hardware acceleration, despite Dianna’s reservations, does help.
My Nexus S has never been snappier since upgrading to ICS. Hardware
acceleration makes a huge difference in apps like the home screen and
Android market. Offloading rendering to the GPU also increases battery
life, because GPUs are fixed-function hardware, so they operate at a
lower power envelope.
Second, contrary to what I claimed
earlier, garbage collection is still a problem, even with the work on
concurrent GC in Dalvik. For example, if you’ve ever used the photo
gallery app in Honeycomb or ICS you may wonder why the frame rate is
low. It turns out the frame rate is capped at 30 FPS because without the
cap, swiping through photos proceeds at 60 FPS most of the time, but
occasionally a GC pause causes a noticeable “hiccup”. Capping the frame
rate at 30 fixes the hiccup problem at the expense of buttery smooth
animations at all times.
Third, there are the hardware problems
that Dianne discussed. The Tegra 2, despite Nvidia’s grandiose marketing
claims, is hurt by low memory bandwidth and no NEON instruction set
support (NEON instructions are the ARM equivalent of Intel’s SSE, which
allow for faster matrix math on CPUs). Honeycomb tablets would be better
off with a different GPU, even if it was theoretically less powerful in
some respects than the Tegra 2. For example, the Samsung Hummingbird in
the Nexus S or Apple A4. It’s telling that the fastest released
Honeycomb tablet, the Galaxy Tab 7.7, is running the Exynos CPU from the
Galaxy S II.
Fourth, Android has a ways to go toward more
efficient UI compositing. On iOS, each UI view is rendered separately
and stored in memory, so many animations only require the GPU to
recomposite UI views. GPUs are extremely good at this. Unfortunately, on
Android, the UI hierarchy is flattened before rendering, so animations
require every animating section of the screen to be redrawn.
Fifth,
the Dalvik VM is not as mature as a desktop class JVM. Java is
notorious for terrible GUI performance on desktop. However, many of the
issues don’t carry over to the Dalvik implementation. Swing was terrible
because it was a cross platform layer on top of native APIs. It is
interesting to note that Windows Phone 7’s core UI is built in native
code, even though the original plan was to base it entirely on
Silverlight. Microsoft ultimately decided that to get the kind of UI
performance required, the code would have to be native. It’s easy to see
the difference between native and bytecode on Windows Phone 7, because
third party apps are written in Silverlight and have inferior
performance (NoDo and Mango have alleviated this problem and the
Silverlight UIs are generally very smooth now).
发表评论
-
AOSP source code build error: Virtual memory exhausted: Cannot allocate memory
2014-01-02 15:47 1380Sometimes compiling certain thi ... -
What is the purpose of different Android partitions
2014-01-02 09:57 741-- Boot partition stores the An ... -
Disable Amazon hint in Ubuntu search
2013-12-22 18:07 941Getting bored with Amazon assoc ... -
Android Kitkat ART vs. Dalvik & Impacts for end-users
2013-12-08 19:00 832What's ART? ART is Google's 2- ... -
error: gnutls_handshake() falied when you sync chip code in ubuntu
2013-11-30 19:47 924gnutls package is broken, worka ... -
unix2dos dos2unix
2013-03-04 20:12 795sudo aptitude install tofrodos ... -
How to make resources added in frameworks/base/core/res/res
2013-02-23 10:19 10841) add the new id to your xml 2 ... -
JDK6 installed in Ubuntu
2012-11-10 15:23 854按照网上的方法apt-get并不成功,我这里采用的方法是手工安 ... -
Android source sync问题汇总(since 2012)
2012-11-04 16:00 18351. [repo init] fetch address is ... -
Android Partitions Explained: boot, system, recovery, data, cache & misc
2012-09-06 16:17 1106Unless you have been using your ... -
What is trickle charge?
2012-07-02 09:47 890Trickle charge is just a very l ... -
如何培养商业头脑?
2012-06-30 17:16 1194http://blog.sina.com.cn/s/blog_ ... -
Android IPC AudioFlinger binder实例
2012-06-20 13:32 1018一篇 android 的 IPC 机制 binder ... -
Eclipse Android project name有错误, source tree无红叉解决办法
2012-06-07 13:22 1315linux: Window -> Preference ... -
Android内核开发的几个常用命令
2012-02-23 15:29 1017在android源码的根目录下执行: . build/env ... -
MTP (Media Transfer Protocol) Introduction
2012-02-07 14:46 2319微軟制訂了一套名 ... -
NFC近场通讯技术介绍
2011-12-01 13:39 2033NFC简介 NFC(Near ... -
Dual-Mode Wifi and Dual-Band Wifi
2011-11-07 11:02 1392Dual-Band Wifi: In Wifi wire ... -
cygwin如何设置subversion代理
2011-10-11 11:13 1555找到如下文件 ~/.subversion/servers ... -
Writing Native Code for Android Systems
2011-09-26 17:53 806Writing Native Code for Android ...
相关推荐
learn ( 'I love Windows Phone, that thing is amazing' , 'positive' ) ;classifier . learn ( 'Awesome this is incredibly perfect, great!!' , 'positive' ) ;classifier . learn ( 'My old Pc is getting Bad...
90000 , // 1.5 * 60 * 1000 - Balance integrity check if we are connected to ws "avoidBadBots" : true , // If we know that some offer is laggy we will firstly try to skip it "safeBuyReques
8. **Cross-platform**:Meteor支持构建跨平台的应用,包括Web、iOS和Android,使用同一套代码库,降低了多平台开发的复杂度。 9. **社区支持**:Meteor拥有一个活跃的开发者社区,提供了大量的教程、文档和第三...
1、资源内容地址:https://blog.csdn.net/abc6838/article/details/143720369 2、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 4、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理
CPPC++_更好的Windows字体渲染
10018
cppc++
二环北路东段欣心家园小区商业B段(中石油加油站东邻).m4a
cppc++
C2005
Python课程设计之高校教务系统
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
10023
使用QUndoStack撤销栈实现QTreeWidget删除item及撤销、重做
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
Python课程设计之飞机大战3.zip
SpringBoot分布式事务
CPPC++_tensorort for yolo系列YOLOv10YOLOv9YOLOv8YOLOv7YOLOv6Y
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
收录了「IT无知君」CSDN博客中涉及的Java项目源码,还有许多的开发工具类,都是我自己在用在不断维护的,需要请进!