- 浏览: 302497 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
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 1385Sometimes compiling certain thi ... -
What is the purpose of different Android partitions
2014-01-02 09:57 745-- Boot partition stores the An ... -
Disable Amazon hint in Ubuntu search
2013-12-22 18:07 945Getting bored with Amazon assoc ... -
Android Kitkat ART vs. Dalvik & Impacts for end-users
2013-12-08 19:00 836What's ART? ART is Google's 2- ... -
error: gnutls_handshake() falied when you sync chip code in ubuntu
2013-11-30 19:47 930gnutls package is broken, worka ... -
unix2dos dos2unix
2013-03-04 20:12 800sudo aptitude install tofrodos ... -
How to make resources added in frameworks/base/core/res/res
2013-02-23 10:19 10891) add the new id to your xml 2 ... -
JDK6 installed in Ubuntu
2012-11-10 15:23 859按照网上的方法apt-get并不成功,我这里采用的方法是手工安 ... -
Android source sync问题汇总(since 2012)
2012-11-04 16:00 18411. [repo init] fetch address is ... -
Android Partitions Explained: boot, system, recovery, data, cache & misc
2012-09-06 16:17 1109Unless you have been using your ... -
What is trickle charge?
2012-07-02 09:47 898Trickle charge is just a very l ... -
如何培养商业头脑?
2012-06-30 17:16 1202http://blog.sina.com.cn/s/blog_ ... -
Android IPC AudioFlinger binder实例
2012-06-20 13:32 1023一篇 android 的 IPC 机制 binder ... -
Eclipse Android project name有错误, source tree无红叉解决办法
2012-06-07 13:22 1322linux: Window -> Preference ... -
Android内核开发的几个常用命令
2012-02-23 15:29 1024在android源码的根目录下执行: . build/env ... -
MTP (Media Transfer Protocol) Introduction
2012-02-07 14:46 2321微軟制訂了一套名 ... -
NFC近场通讯技术介绍
2011-12-01 13:39 2038NFC简介 NFC(Near ... -
Dual-Mode Wifi and Dual-Band Wifi
2011-11-07 11:02 1401Dual-Band Wifi: In Wifi wire ... -
cygwin如何设置subversion代理
2011-10-11 11:13 1561找到如下文件 ~/.subversion/servers ... -
Writing Native Code for Android Systems
2011-09-26 17:53 813Writing 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拥有一个活跃的开发者社区,提供了大量的教程、文档和第三...
单项海洋环境影响评价等级表.docx
【作品名称】:基于AT89C51 单片机为核心器件,程序设计采用C 语言,Keil 软件编译程序,配以相关外围接口电路,实现了方波、锯齿波、正弦波、三角波、梯形波五种特定波形的产生【论文+源码】 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:本设计中的波形发生器系统要求基于51单片机,因此选用以AT89C51单片机作为整个系统的控制核心,应用其强大的接口功能,构成整个波形发生器的硬件系统。使用C 语言对单片机编程可产生相应的正弦波,方波,三角波,锯齿波梯形波波形信号。在程序运行时,当接收到按键信息后,需要输出某种波形时,调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出即可得到要求的波形。 当需要改变频率时只需要改变单片机的波形发生程序中的递增或者递减变量即可。 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。
数学建模培训资料 数学建模实战题目真题答案解析解题过程&论文报告 完全多元图的最大匹配问题研究 共9页.pdf
本项目是基于Python Web的社区爱心养老管理系统,旨在为社区养老提供一个全面、高效的管理平台。系统集成了用户管理、老人信息管理、健康管理、活动管理、服务管理等多项功能,通过简洁明了的界面,让管理人员能够轻松地进行各项操作,从而更好地服务于社区老人。 在架构上,系统采用B/S模式,前端使用HTML、CSS、JavaScript等技术,搭配Vue.js框架,实现了用户友好的交互界面;后端则基于Python的Django框架,提供了稳定且高效的服务端逻辑处理能力。数据库选用MySQL,确保了数据的存储安全和高效访问。 开发此项目的目的,不仅是为了满足计算机相关专业学生的毕设需求,提供一个实战练习的平台,更是希望通过实际项目的开发,培养学生的专业技能和实践能力,同时,也希望能为社区养老服务贡献一份力量,通过科技手段,让老年人的生活更加美好、便捷。
教学版单体spring-petlinic,课程《Kubernetes微服务实践》
内容概要:本文介绍了16世纪法国外交家Blaise de Vigenère提出的一种多表密码算法,详细解释了Vigenère密码的加密解密机制及其历史应用背景。特别提到了当明文M的长度超过密钥K的情况下,密钥会被重复使用的技巧。 适合人群:对古典密码学感兴趣的初学者,以及希望深入理解密码编码基本原理的学习者。 使用场景及目标:了解Vigenère密码的工作原理,掌握简单的加解密技术,增强信息安全意识。能够自行实施加解密操作,理解经典密码学的基本概念和技术。 其他说明:本文不仅提供了理论讲解,还给出了具体的例子帮助理解和实操练习。
STM32-EMBPI : Embedded Pi, triple-play platform for STM32, Raspberry Pi and Arduino
内容概要:本文主要探讨了电子电气架构中的网络管理策略,尤其是针对汽车中多个ECU(Electronic Control Unit)的协同管理和低功耗设计。通过引入网络管理状态机的概念,详细介绍了各状态(如常规运行状态、重复报文状态、准备睡眠模式、预睡眠模式、深度睡眠模式等)的具体运作机制及其在汽车电子系统中的重要性。文中还讨论了网络管理报文的设计与传输规则,特别是控制位向量CBV的定义,强调了网络管理在节能降耗方面的关键作用。 适用人群:具备一定汽车电子工程背景的专业人士或研究者,尤其对网络管理及低功耗设计感兴趣的工程师。 使用场景及目标:适用于汽车设计与制造企业的研发部门,帮助其优化电子控制系统,提升产品能效比,降低维护成本,提高用户体验。通过对网络管理策略的理解与应用,达到降低车载电子系统功耗的目的,进而延长电动车的续航能力和降低传统燃油车的油耗。 其他说明:文章不仅提供了理论上的阐述,还包括了具体的操作指南和技术细节,有助于从业者深入理解和实施网络管理方案。同时提醒在现代信息化社会中保持屏蔽力的重要性,鼓励读者专注于自己的发展目标,避免无效的精力分散。
英飞凌TC3XX_MCAL培训PPT
缴费综合服务系-JAVA-基于springBoot高校网上缴费综合服务系统设计与实现
Python与机器学习方向,《TensorFlow基础教程》课程仓库
【资源说明】 本科毕业设计 基于Python+Django教学资源管理系统网站详细文档+全部资料.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
内容概要:文章详细讨论了汽车行业正经历的重大变革,尤其是电动汽车(EV)和软件定义汽车(SDV)对行业的深远影响。随着技术的进步,汽车的差异化优势不再仅限于机械硬件,而是越来越多地取决于软件和服务。这一转型要求汽车制造商重新评估现有的解决方案堆栈,加大在电气化和连接性等领域的投资,以实现车型的电气化并支持可扩展性和全生命周期更新。同时,汽车的开发重点已经从机电领域转向了芯片和软件领域,强调基于云计算的协作开发方法。 适合人群:汽车行业专业人士、汽车电子工程师、技术研发人员及政策制定者。 使用场景及目标:帮助读者理解和把握汽车行业数字化转型的趋势,指导他们在电动汽车和软件定义汽车领域做出正确的技术投资和战略调整。 其他说明:本文不仅讨论了技术变革,还深入剖析了由此带来的商业和运营模式的变化,为汽车行业的未来发展方向提供了洞见。
微信课堂助手 微信小程序+PHP毕业设计 源码+数据库+论文+启动教程
新设博士后科研工作站备案申请表.xlsx
的玩具 Python 实现手套蟒蛇GloVe的玩具 Python 实现。Glove 产生单词的密集向量嵌入,其中一起出现的单词在生成的向量空间中靠得很近。虽然这会产生与word2vec (在gensim中有一个很棒的 python 实现)类似的嵌入,但方法不同GloVe 通过对语料库词共现矩阵的对数进行分解来产生嵌入。代码采用异步随机梯度下降,用Cython实现,很可能存在大量bug。安装使用 pip 从 pypi 安装pip install glove_python。OSX 用户请注意由于使用 OpenMP,glove-python 无法在 Clang 下编译。要安装它,您需要一个较新的版本gcc(例如来自 Homebrew)。应该由 接收setup.py如果没有,请打开一个问题。使用 OSX 中包含的默认 Python 发行版进行构建也不受支持请尝试 Homebrew 或 Anaconda 中的版本。用法生成嵌入分为两个步骤从语料库中创建共现矩阵,然后使用它生成嵌入。该类Corpus有助于从可交互的标记构建语料库该类Glove训练嵌入(使
消息中间件rabbitmq学习的一些代码、笔记