Google+上有意思的讨论从未间断,几乎已是Google+的标志性特色了。最近两天,移动领域的爱好者都被Dianne Hackborn的一则吐槽所吸引。吐槽要火,两大因素不可缺少,一是该话题乃众人关注,却无统一意见。二是吐槽中有大料或者干货爆出,引人入胜。此番吐槽吸引人的地方,正是因为此吐槽是关于饱受争议的Android graphics性能的,自从Android推出的第一天起,graphics的渲染,动画切换等就为人诟病,到后来几乎成了果粉安粉大战的必备话题。而吐槽之人呢?是Android团队中比较senior的架构工程师Dianne Hackborn,相信关注Android开发的朋友,都不会对此女陌生。
为什么Dianne Hackborn身为Android内部人士,会突然公开讨论如此敏感的一个话题呢?用她自己的话说,就是“受够了外界谣传的关于Android图形渲染的不实信息”。我把她吐槽的大概重点归纳如下:
1. 外界盛传,Android图形渲染一直不支持硬件加速,直到3.0才开启此特性。我也一直深信此观点。其实,从最初起,Android就一直支持硬件加速图形窗口,比如你看到的所有比如菜单的出没,activity之间的切换,对话框的弹出等。
2. 但Android却是用软件来渲染窗口里面的内容的。如果屏幕上有多个窗口呈现,其中一个窗口的内容需要重新绘制,那么其他窗口不会变化,而改变化的窗口的重新构成还是通过硬件加速,只不过其中变化的内容,却是软件绘制了(不好意思插一句。Redraw!!!!!Android开发者现在应该知道这多么坑爹了吧)。虽然说是软件绘制,却不一定就表示会卡。卡不卡,是由绘制频率和刷新率是否匹配所决定的,比如手机频的刷新率是60fps,但你的渲染率是50fps,双方不同步,自然就会有停顿的感觉产生。如果用软件做这个任务,做得好不好,这个取决于显示屏上的像素数量以及你CPU的能力。比如同样的渲染,Nexus S即使在800×480也不会有问题,而最老的Moto Droid如果也是这样的屏幕,就会力不从心。
3. “完全”的硬件加速,已经在Android 3.0中就支持了,也就是说,即使是窗口内容的渲染也是硬件做的。Android 4.0并没有比3.0有更多的加速能力。4.0的改进,仅仅是默认所有app都使用硬件加速了,而不是像3.0那样开发者还需要指定android:handwareAccelerated=”true”这个选项。然而,完全启用硬件加速的代价是,程序内存占用会严重增多,反而会导致别的方面,比如程序切换,变慢。正因为这样,在将ICS移植到Nexus S时,Google强制关闭了硬件加速选项,保证整个系统的流畅运行。
4. 人们经常比较的网页浏览的性能,iOS总是比Android好很多,但这个和硬件加速渲染是无关的。在Android中,网页是被当作list而不断在屏幕上渲染的,而iOS用的则是tile贴图。list的好处是你不会在放大缩小或者上下滑动时看到还没来得及绘制的tile,但这却大大增加了渲染frame rate的难度。所幸的是,从3.0开始,Android也使用了tile的渲染,所以之后的设备不会再有这种性能缺陷(在我的GN上是明显感觉出来了进步)。
她的吐槽还有很多内容,但大意就是这些。有兴趣的朋友可以直接点击那个链接过去看。总的来说,问题就是Android是一直都有硬件加速的,可惜这个加速仅仅是用于服务那些微不足道或者不重要的东西的—窗口的切换这些。真正和application相关的内容渲染却都是软件在做。这就是为什么iPhone永远感觉都比Android快的原因。iPhone一切的UIView都是Core Animation支持的,而Core Animation又是GPU支持的。更关键的是,iPhone的Core Animation是在不同的线程上run的,和用户正在做的操作是隔离的,所以动画效果会严格按照schedule的去产生,完全没有迟钝感。
Dianne Hackborn的这个吐槽引起了很大的影响,其中一位前Google的实习生,即将去Windows Phone开发组的Andrew Munn,也因此发表了其对此的看法。Munn强调,这些技术细节都不重要,用户关注的就是你卡不卡。作为一个长期服侍果粉LD的人,我对此深表同意。Munn也针对这个性能问题提出了不少技术看法,可惜其中有不少低级错误。我总结一些我觉得是对的吧:
1. 所有app硬件加速,如Dianna所说,不是万能良药。但是,至少如ICS所表现,确实解决了很多问题。Munn的Nexus S在运行ICS后流畅度大为增加,而从我使用Galaxy Nexus的情况看,完全不是和以前的Android一个等级的。特别是桌面环境(很多widget的情况下)和Android market。Munn还指出,硬件加速能帮助电池的使用长度。
2. 垃圾回收机制虽然已经并行化了,但还是需要改进。最明显的就是Android上的gallery app。如果你在使用gallery时,会发现frame rate很低的情况,这是因为Android将其限制到了30fps。为什么?因为如果你浏览60fps的照片,偶尔会出现垃圾回收引起的停顿,严重影响使用体验。
3. Java, Dalvik。这个问题相信所有开发者都有体会。作为Java痛恨者之一,我很早就做过论断,只要Android坚持java一天,系统效率就会落后iOS一天。如果你尝试过Android NDK的开发,你会发现,区别是多么惊人。
4. Android的UI问题是一个历史遗留问题。在目前市场上所有的移动系统里,Android是唯一一个早于iPhone推出之前就开始开发的,而且当时针对的是黑莓,非触摸屏机。所以,UI框架也有着不可原谅的遗留问题:UI的渲染是在主线程进行的,animation是由UI管的。而且UI没有任何优先级。之后,全新的WebOS, Win 7等都针对触摸操作而学习iOS的UI处理,只有Android没有,也无法推到重来。
如果你好奇为什么Google很难推到现在UI的框架重来,原因不外乎就是这几个:所有的app都需要重写。老旧而没升级的app无法兼容。在UI新框架ready之前,所有Android的特性都无法继续进行改进。
是的,Android有很多很强大的特性,比如widget,比如动态桌面,比如完全多进程。这些特性带给我们强大的体验,同时也增加了UI的负担,反过来成了Android一道长久的伤疤,而这个伤疤,即使是硬件再强大,也很难磨灭。作为一个长期使用iPhone的Android爱好者,UI是我之前一直无法忍受Android日常使用的第一原因。当然,正如我前一篇介绍Android4.0的文章提到,ICS是在这个方面的一个巨大进步。它能和iOS比肩了么?还不能。但它让Android从在万米长跑中落后100米,变为了落后20米。Munn和我对Google都有同样的印象,那就是:速度,在Google里永远是第一目标。Google有很多人,他们都对”lag”这个东西极度痛恨,对“速度”的追求永无停止。看看search,看看Gmail,看看Chrome,你就明白了。我不知道Android team能否最后找到不需要重写就能解决UI问题的方法,但以我对Android team的工作精神,能力以及管理(这个话题要展开可以另写一篇文章,但总的来说我觉得Android是Google内部管理最好的团队之一)的了解,我相信Android迟早会达到这个目标的。也许就在今年6月。
相关推荐
有些章使用了一个公共的示例:Android数独游戏。通过逐渐在游戏中添加特性,你将学习Android编程的许多方面,包括用户界面、多媒体和Android生命周期。.. 第一部分中将首先介绍Android,内容涉及如何安装...
Android手机视频电话软件的设计与实现
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
城市旅游产业的日新月异影响着村镇旅游产业的发展变化。网络、电子科技的迅猛前进同样牵动着旅游产业的快速成长。随着人们消费理念的不断发展变化,越来越多的人开始注意精神文明的追求,而不仅仅只是在意物质消费的提高。塞北村镇旅游网站的设计就是帮助村镇发展旅游产业,达到宣传效果,带动一方经济发展。而在线消费与查询正在以高效,方便,时尚等的特点成为广大互联网用户的首选。塞北村镇旅游网站设计与开发以方便、快捷、费用低的优点正慢慢地进入人们的生活。人们从传统的旅游方式转变为在线预览,减轻了劳动者的工作量。使得旅游从业人员有更多时间来获取、了解、掌握信息。 塞北村镇旅游网站根据当地旅游风景和特色的实际情况,设计出一套适合当地旅游信息网站,通过网络,实现该网站的推广从而达到宣传的效果。 本系统在设计方面采用JSP和Java语言以及html脚本语言,同时采用B/S模式,进行各个界面和每个功能的设计与实现,后台管理与设计选用了SQL Server 2005数据库,前台设计与后台管理相结合,共同完成各功能模块的功能。
JSP考试系统_jspks.rar是一个为计算机专业学生和教师设计的JSP源码资料包,它提供了一个全面的、易于使用的在线考试平台。这个系统是基于Java Server Pages (JSP)技术构建的,这是一种用于创建动态网页的服务器端技术。通过这个系统,用户可以创建、管理和参加在线考试。这个系统的主要功能包括:用户注册和登录,试题管理(包括添加、修改和删除试题),试卷管理(包括创建、编辑和删除试卷),考试管理(包括开始、暂停和结束考试),成绩管理(包括查看和统计成绩)等。此外,系统还提供了丰富的试题类型,如选择题、填空题、判断题和简答题等,以满足不同的考试需求。JSP考试系统的界面设计简洁明了,操作方便,无论是教师还是学生都可以轻松上手。对于教师来说,他们可以通过这个系统轻松地管理试题和试卷,节省了大量的时间和精力。对于学生来说,他们可以随时随地参加在线考试,方便快捷。总的来说,JSP考试系统_jspks.rar是一个非常实用的JSP源码资料包,它不仅可以帮助学生更好地学习和掌握JSP技术,也可以帮助教师更有效地管理在线考试。无论是对于学生还是教师,这个系统都是一个不可或缺的工具。重
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
词向量
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
基于matlab开发的光谱数据预处理程序,包括MSC,SNV,归一化,中心化,导数等等.rar
优秀源码设计,详情请查看资源源码内容
基于matlab开发的TD-LTE随机接入过程前导序列检测算法Matlab信道仿真.rar
词向量 词向量(Word Vectors)是一种用来表示词语语义和语法信息的数学模型。它将词语转换为固定长度的实数向量,使得词向量之间的距离(通常使用余弦相似度)可以反映出词语之间的语义关系。词向量在自然语言处理和机器学习领域有广泛的应用,例如文本分类、情感分析、句子相似度计算等。 词向量的发展经历了从传统的one-hot表示到分布式表示的转变。传统的one-hot表示将每个词语表示为一个高维稀疏的向量,向量中只有一个元素为1,其余元素都为0,表示词语在词汇表中的位置。然而,这种表示方式无法准确捕捉词语之间的语义关系。 为了解决这个问题,分布式表示方法被提出。分布式表示将每个词语表示为一个低维稠密的实数向量,其中每个元素都包含了词语的语义和语法信息。这种表示方式的关键思想是,具有相似语义和上下文的词语在向量空间中更加接近。 现在广泛应用的词向量模型有许多种,其中最著名的是Word2Vec模型和GloVe模型。Word2Vec是一种基于神经网络的模型,它通过一种称为连续词袋(CBOW)和另一种称为跳字(Skip-gram)的训练方法来学习词向量。GloVe模型是一种基于全局词频的词
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
超市会员积分管理系统主要用于实现了企业管理数据统计等。本系统结构如下: (1)网络会员管理中心界面: 会员修改密码信息模块:实现会员密码功能; 会员登陆模块:实现会员登陆功能; 会员注册模块:实现会员注册功能; 留言板模块:实现留言板留言功能 (2)后台管理界面: 系统用户管理模块:实现管理员的增加、查看功能; 会员信息管理模块:实现会员信息的增加、修改、查看功能; 注册用户管理模块:实现注册用户的增加、修改、查看功能; 会员卡管理模块:实现会员卡信息的增加、查看功能; 商品销售管理模块:实现商品信息的增加、查看功能; 会员积分管理模块:实现合作公司信息的增加、查看功能; 信息统计模块:实现数据统计报表功能; 留言板模块:实现留言板信息的增加、修改、查看功能;
信息办公XML考试系统_xmlks.rar是一款专为计算机专业设计的JSP源码资料包。这个资料包包含了丰富的功能和特性,旨在为教育机构、培训中心和企业提供一个完整的在线考试解决方案。通过使用这个资料包,用户可以轻松地创建和管理自己的在线考试平台,实现对学员的考试、评分和成绩管理。首先,这个资料包采用了流行的JSP技术,结合了XML数据存储和处理,使得系统具有很高的可扩展性和灵活性。用户可以方便地根据自己的需求定制和修改系统的功能和界面。同时,系统还支持多种题型,如选择题、填空题、判断题等,满足不同类型考试的需求。其次,信息办公XML考试系统_xmlks.rar具有良好的用户体验和易用性。系统的界面设计简洁明了,操作流程清晰易懂,使得考生可以快速上手并完成考试。同时,系统还提供了丰富的帮助文档和教程,方便用户在使用过程中随时查阅和学习。此外,这个资料包还具有强大的后台管理功能。管理员可以轻松地添加、删除和修改试题,设置考试参数,查看考生的成绩和答题情况。同时,系统还支持多种权限管理,确保数据的安全性和保密性。总之,信息办公XML考试系统_xmlks.rar是一款功能强大、易用性高、可扩展
该资源包“130222.rar”是一个针对计算机专业学生或开发者设计的基于Java服务器页面(JSP)、Servlet以及MySQL数据库的博客系统网站的源码资料。这个压缩文件包含了构建一个功能齐全的动态网站所需的全部源代码和相关文档,它允许用户通过互联网发布文章、分享观点,并与他人进行互动。在内容上,它可能包含了多个JSP页面文件,用于展示博客首页、文章列表、文章内容页、写文章的表单等界面;包含了Servlet类文件,用于处理用户的请求、与数据库交互以及业务逻辑的处理;还可能包含配置文件如web.xml,用于配置Servlet映射等。至于数据库部分,则包括了MySQL的数据库文件,其中存储了博客系统的数据结构、初始数据以及存储过程等。此资料包是一套学习和实践Web开发的好材料,尤其适合那些想要深入学习JSP、Servlet和数据库交互技术的学习者。通过分析和运行这些源码,学习者可以了解Web应用的开发流程,掌握如何在Java Web环境中使用MVC设计模式,以及如何实现用户身份验证、会话管理、数据持久化等关键功能。由于是基于JSP的传统Web开发技术,虽然现代Web开发领域已逐渐向全
可视化图库Pandas_Alive实现动态图表绘制,使用时减少数据会使生成GIF的时间变短。通过对CSV文件分析,实现动态条形图、动态曲线图、气泡图、饼状图、地理空间图等多个动态图表的可视化分析。
基于SSM的“停车场管理系统”的设计与实现基于SSM的“停车场管理系统”的设计与实现基于SSM的“停车场管理系统”的设计与实现基于SSM的“停车场管理系统”的设计与实现基于SSM的“停车场管理系统”的设计与实现基于SSM的“停车场管理系统”的设计与实现基于SSM的“停车场管理系统”的设计与实现基于SSM的“停车场管理系统”的设计与实现基于SSM的“停车场管理系统”的设计与实现
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。