(计算机系统结构专业论文)基于jit的嵌入式js引擎优化技术的研究.pdf_第1页
(计算机系统结构专业论文)基于jit的嵌入式js引擎优化技术的研究.pdf_第2页
(计算机系统结构专业论文)基于jit的嵌入式js引擎优化技术的研究.pdf_第3页
(计算机系统结构专业论文)基于jit的嵌入式js引擎优化技术的研究.pdf_第4页
(计算机系统结构专业论文)基于jit的嵌入式js引擎优化技术的研究.pdf_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中文摘要 j a v a s c r i p t 在w e b 中得到了广泛应用,提高j a v a s c r i p t 程序的处理能力显得 尤为紧迫,由此看来提高j s 引擎的性能对j a v a s c r i p t 的发展将有重要意义。针 对嵌入式平台多样性和硬件复杂性的特点,开发可配置的j s 引擎对提高嵌入式 浏览器的适应性更加重要。 本文充分分析了嵌入式j s 引擎的特点,设计了可配置的j i t 优化方法,并 且就如何提高j s 引擎的性能进行了深入研究。本文首先阐述了j s 引擎的发展现 状,研究了当前主流j s 引擎优化技术,重点介绍了j i t ( j u s t i n t i m e 即时编译) 优化技术。然后分析了某商用嵌入式j s 引擎的特点,讨论了通过添加j h 模块 来提高该j s 引擎性能的优化方法。针对嵌入式环境特点和该j s 引擎特殊的多层 结构,本文把j i t 模块划分为热区监测器,热区记录器和热区编译器,并对各个 子模块的工作流程及关键部分的实现进行了详细的描述。在选择热区的算法中, 通过复合使用基于t r a c e 和基于函数的优化技术,并提供相关的优化参数,提高 了嵌入式浏览器的适应性。在管理优化函数编译结果时,使用基于双链表的最近 最少使用算法,提高了内存空间的使用率。最后,本文对优化前后的j s 引擎的 性能进行了分析与对比。结果表明,优化后的j s 引擎在处理优化空间较大的 j a v a s c r i p t 代码时,其性能有了大幅的提高。 目前,本文所提到的j s 引擎优化工作已经完成,客户对其性能进行测试后 表明,其性能和适应性都得到了很大的提高。 关键字:j s 引擎t 嵌入式浏览器t r a c et r e e 优化函数 a b s t r a c t w i t ht h ew i d e l yu s eo fj a v a s c r i p ti nt h ew e b ,j se n g i n ei sp l a y i n gam o r ea n d m o r ei m p o r t a n tr o l ei nt h eb r o w s e r , s oi ti ss i g n i f i c a n tt oi m p r o v et h ep e r f o r m a n c eo f j se n g i n e h a r d w a r ei ne m b e d d e dp l a t f o r mi sc o m p l i c a t e da n dd i v e r s i f i e d ,s oi ti s m o r es i g n i f i c a n tt od e v e l o pc o n f i g u r a b l ej se n g i n et oi m p r o v et h ea d a p t a b i l i t yo f e m b e d d e db r o w s e r t h ep a p e ra n a l y z e st h ec h a r a c t e r i s t i c so fe m b e d d e dj s e n g i n e ,d e s i g n s c o n f i g u r a b l e j i to p t i m i z a t i o nm e t h o d ,r e s e a r c h e so nh o wt o i m p r o v e t h e p e r f o r m a n c eo fj se n g i n e a ti n - s t ,t h ep a p e ri n t r o d u c e st h ed e v e l o p m e n to f j se n g i n e , r e s e a r c h e st h ea d v a n c e dt e c h n o l o g i e sw h i c ha r eu s e db yt h em a i nj se n g i n e s ,a n dp u t s e m p h a s i so nt h ej i to p t i m i z a t i o nm e t h o d s e c o n d ,t h ep a p e ra n a l y s e st h ec h a r a c t e ro f t h ee m b e d d e dj se n g i n eo ft h ec o m m e r c eb r o w s e r , d i s c u s s e st h eo p t i m i z a t i o no fj s e n g i n eb a s e do nj i t c o n s i d e r i n gt h es p e c i a ls t r u c t u r eo ft h ej se n g i n e w ed i v i d et h e j 1 tm o d u l ei n t ot h r e es u bm o d u l e s w h i c ha r eh o t s p o tm o n i t o r , h o t s p o tr e c o r d e ra n d c o m p i l e r c o n s i d e r i n gt h ec h a r a c t e ro fe m b e d d e ds y s t e m ,t h ep a p e rd e s i g n st h ew o r k f l o wo ft h et h r e em o d u l e si nd e t a i la n dd e s c r i b e st h ei m p l e m e n t a t i o no fs o m ek e y p a r t s i nt h eh o t s p o ts e l e c t i o na l g o r i s m , w ec o m p o u n dt h et r a c e - b a s e dm e t h o dw i t h f u n c t i o n - b a s e dm e t h o d , s ot oi m p r o v et h et r a n s p o r t a b i l i t yo ft h ej se n g i n e u s i n g l r um e t h o dw h i c hi sb a s e do nd o u b l e - - l i n k e d - l i s tt om a n a g et h ec o m p i l e dr e s u l to f f u n c t i o n s ,t h i si m p r o v e st h em e m o r yu t i l i z a t i o n a tl a s t ,t h ep a p e ra n a l y s i sa n d c o m p a r e st h eo p t i m i z e dj se n g i n ew i t ht h eo r i g i n a lo n e n er e s u l ts h o w st h a t w h e n t h eo p t i m i z e dj se n g i n er u n sj a v a s c r i p tc o d e st h a ta r ei n c l u d i n gm a n yl o o p s ,t h e p e r f o r m a n c eo f t h ej se n g i n ei sb e t t e rt h a nt h eo r i g i n a lo n e a tp r e s e n t ,t h eo p t i m i z a t i o nw o r ko ft h ej se n g i n ew h i c hi sc o n c e m e di nt h e p a p e rh a sb e e na c c o m p l i s h e d a f t e rt e s t i n gt h ej se n g i n e ,i ts h o w st h a tb o t ht h e p e r f o r m a n c ea n da d a p t a b i l i t yh a v eb e e ni m p r o v e db e t t e r k e yw o r d s :j se n g i n e ,j i t , e m b e d d e d b r o w s e r , t r a c et r e e ,o p t i m i z a b l e f u n c t i o n 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的 研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表 或撰写过的研究成果,也不包含为获得叁鲞盘鲎或其他教育机构的学位或证 书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意。 学位论文作者签名膺泊哼 签字日期加尸年月日 - 学位论文版权使用授权书 本学位论文作者完全了解苤盗盘鲎有关保留、使用学位论文的规定。 特授权墨鲞盘鲎可以将学位论文的全部或部分内容编入有关数据库进行检 索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校 向国家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名: 离反哼 导师签名: 许伶苌 1 叮伶头 签字日期:钆哆年多月日 签字日期:力吵年多月z , , 1 9 第一章绪论 1 1 研究背景及意义 第一章绪论 1 1 1 互联网的发展对j a v a s c r i p t 的要求 随着互联网应用的普及与发展,脚本语言及其它的一些动态语言受到众多 开发者的青睐。j a v a s c r i p t 作为众多动态语言的优秀代表,在w e b 中得到了广泛 地使用。它减少了服务端的压力,提高了用户的w e b 体验效果。随着 a j a x ( a s y n c h r o n o u sj a v a s c r i p ta n dx m l ) 的引入,j a v a s c f i p t 在网页领域的优势 显得更加明显。许多大公司,诸如g o o g l e ,y a h o o ,都使用a j a x 来实现网页型 交互应用程序,比如邮件、即时通信、字处理、日历等。同时,互联网在移动平 台的迅速发展以及丰富多彩的w e b 应用的普及,对j a v a s c f i p t 的运行速度提出了 更高的要求。由此可见,互联网的快速发展促进了j a v a s c r i p t 的广泛应用,而随 着与j a v a s c f i p t 密切相关的j s 引擎性能的不断提升,必然会进一步促进互联网 的发展。 1 1 2j s 引擎的发展与现状 由于嵌入式环境的多样性以及嵌入式应用的复杂性,因此垄断性的嵌入式 浏览器没有出现。目前,国际市场上主流的嵌入式浏览器主要有以下几款。 1 k o n q u e r o r e m b e d d e d 1 5 】嵌入式浏览器部分遵循e c m a s c p t2 6 2 规范,可 实现对9 0 的j a v a s c r i p t 脚本的解释执行。 2 a c c e s sn e t f r o n t ,a c c e s s 是日本大型的浏览器厂商,n e t f r o m 在嵌入式浏 览器领域占有很高的市场份额,被广泛应用于手持设备、机顶盒、游戏 机等产品。 3 1 _ b r o w s e rp l u s 基于w i n d o w sc e 平台,适用于具有彩色或单色显示功能 的掌上电脑;具有复杂的缓存功能,使得下载和显示得到优化;能支持 在线和离线浏览以及多媒体数据和图像;为电子商务的安全系统提供 1 2 8 b i t 加密;支持代理服务器、c o o k i e s f r a k e s ( 文本模式) ,但不支持 j a v a s c r i p t 。 由于嵌入式系统面向用户、面向产品、面向应用的特点,因此它的功耗、 体积、成本、可靠性、速度、处理能力等方面均受到应用要求的制约。为了适应 第一章绪论 各种不同的环境,各主流嵌入式浏览器普遍对j a v a s c r i p t 的支持力度不够。有的 嵌入式浏览器完全不支持j a v a s c r i p t :有的部分支持;有的即使完全支持,但也 不符合e c m a s c r i p t 标准,而且其最大的弱点是性能偏低。相对来讲,桌面版浏 览器环境限制较小,配置较高,使用技术较为先进,对j a v a s c r i p t 有很好的支持。 j s 引擎作为浏览器的重要组成部分,影响着浏览器的整体性能。因此各浏 览器厂商都在j s 引擎上投入了巨大精力。在桌面浏览器领域,当前比较有影响 力的有下面几款产品: 1 t r a c e m o n k e y t r a c e m o n k e y 是f i r e f o x 最新的j s 引擎。f i r e f o x 作为当前市场占有率仅次 于i e 的浏览器,它的每一次革新都会给浏览器市场带来很大的冲击,而这次 t r a c e m o n k e y 的问世,对f i r e f o x 用户来讲是一个福音。t r a c e m o n k e y 通过在 s p i d e r m o n k e y1 9 的基础上增加了基于t r a c e 的j i t 模块,使得j s 引擎的性能有 了数倍的提高。 2 s q u i r r e l f i s he x t r e m e s q u i r r e l f i s he x t r e m e 基于“寄存器,直接线程,高级比特编码引擎”技术, 是w e b k i t 的核心j s 引擎。由于其采用了诸如字节码优化、多态缓存、轻量级的“上 下文线程及全新的正则表达式引擎等新技术,该引擎在性能上比s q u i r r e l f i s h 有了很大地提高 2 8 】。 3 g o o g l e v 8 v 8 是g o o g l ec h r o m e 的核心j s 引擎,为快速执行大容量的j a v a s c r i p t 应用而 设计。g o o g l ec h r o m e 作为g o o g l e 最新推出的开源浏览器,使用了很多关键技术 来提高性能。这些新技术包括用隐藏类快速访问属性、动态机器码生成、高效的 垃圾收集( 标记一收集、分代收集、精确收集、压缩收集) 、小对象读取和彻底 地多线程等【l9 】。 1 1 3j s 引擎在嵌入式浏览器中的地位 随着网络应用的普及,浏览器在嵌入式设备中的地位显得越发重要。嵌入 式浏览器已经不再局限于提供浏览器的最基本功能,而是逐步走向完整化。从现 在的情况来看,市场上出现了很多网页版的应用软件,主要有: 1 文字处理类软件有g o o g l ed o c u m e n t 。 2 即时通信类软件有腾迅q q 和微软m s n 的网页版本。 3 下载工具类软件中的w 曲迅雷已经非常流行。 4 网页版本的游戏丰富多彩。 5 网页内嵌版媒体播放类软件层出不穷。 2 第一章绪论 由此看来,不久的将来,嵌入式浏览器可能会成为嵌入式系统中唯一支持 的软件。到那时,浏览器将取代嵌入式操作系统,占据嵌入式系统的核心地位。 那时,嵌入式浏览器将蜕变成浏览器与硬件系统之间的驱动和底层的管理模块, 完成基本的内存管理、进程管理、硬件驱动等工作。甚至,在一些设计优良的嵌 入式系统中,浏览器完全可以越过操作系统而直接对硬件进行管理,由此来进一 步提高系统效率。 当前,制约网络应用进一步发展的最大因素是脚本语言的执行速度。 j a v a s c r i p t 作为应用最为广泛的一种脚本语言,提高其执行速度对开发计算密集 型w 曲应用具有重要意义。 1 2 选题背景及主要工作 嵌入式浏览器的性能和适应性决定了其在市场竞争中的地位。由于j s 引擎 在嵌入式浏览器中所处的重要地位,从某种意义上可以说,j s 引擎的性能和适 应性决定了嵌入式浏览器的整体性能。 随着硬件生产工艺水平的不断提高和硬件价格的不断下降,嵌入式系统的概 念也有了很大的变化。有些嵌入式系统,如车载g p s ,为了满足用户不同的需求, 提供了由相同类型但不同型号的硬件组成的差异较大的多个配置,丰富了用户的 选择。但是如果针对每个配置都开发一个浏览器,这将大大增加开发成本,影响 产品的发布时间。因此开发具有较高适应性的嵌入式浏览器就显得非常有价值。 k e s 是国外一款商用浏览器( m o z i l a r ) 使用的j s 引擎,符合e c m a 2 6 2 标 准,完全兼容j a v a s c r i p t l 5 ,部分支持j a v a s c r i p t l 7 。但该引擎最大的缺点在于 其无法应对当前飞速发展的网络应用,性能较差。同时,原有设计并没有充分考 虑到环境配置问可能存在的数倍差异,适应性较差。因此,提高该引擎的性能和 适应性就显得非常紧迫,本课题即基于该j s 引擎k e s 的性能优化项目而来( 考 虑到商业保密,文中用“k e s ”,“m o z i l a r 代替其j s 引擎和嵌入式浏览器的真 实名称) 。 论文主要完成以下工作: 1 在充分分析k e s 代码的基础上,研究了现在主流的j s 引擎所使用的先 进技术,结合k e s 特点,提出了基于j i t 的k e s 优化方法。这种方法 的优点是在不修改原有k e s 代码,不改变k e s 原有架构的前提下完成 优化工作。 2 根据k e s 的结构特点,把j i t 划分成热区监测器,热区记录器和热区编 译器,分别设计并实现了这三个模块。在选择热区的算法中,通过复合 第一章绪论 使用基于t r a c e 和基于函数的优化技术,大大提高了优化后j s 引擎的适 应性。在管理优化函数编译结果时,使用基于双链表的最近最少使用算 法,提高了内存空间的使用率。 3 对优化前后的k e s 性能进行了比较。数据显示,优化后的k e s 的性能 和适应性均有了大幅提升。 1 3 论文组织结构 论文的组织结构如下: 第一章绪论。主要阐述了j a v a s c r i p t 引擎的发展,现状以及嵌入式环境对 j a v a s c r i p t 引擎的特殊要求,引出了本次课题要解决的问题。 第二章相关技术研究。首先介绍了j a v a s c r i p t 与j a v a 的区别,用以说明j a v a 虚拟机使用的技术可以用于j s 引擎。其次,阐述了嵌入式操作系统的特点和嵌 入式浏览器的工作原理。然后,详细介绍了j s 引擎的优化方法,重点阐述了j i t 技术。最后,介绍了跨平台c 抖库n a n o j i t 的基本概念。 第三章j i t 模块总体设计。首先提出设计目标,对j i t 进行了功能模块的划 分,然后描述了j i t 的运行状态转换并介绍了三个模块的基本功能。 第四章热区监测器与热区编译器的设计与实现,详细介绍了两个模块的工 作流程,重点描述了热区选择算法和优化函数编译结果的管理算法。 第五章热区记录器的设计与实现,介绍了热区记录器的工作流程,重点阐 述了记录t r a c et r e e ,扩展t r a c et r e e 和记录优化函数的过程。 第五章k e s 性能分析,通过大量测试数据,对比了优化前后的k e s 的性能, 证明了本次课题的成功。 第六章总结与展望,对本次课题进行了总结,并提出了进一步优化该j s 引 擎的方法。 4 第二章相关技术研究 2 1j a v a s c r i p t 与j a v a 第二章相关技术研究 j a v a s c r i p t 是i 扫n e t s c a p e 公司开发的一种通用的、基于原型的、具有面向对 象能力的脚本语言。它最初称为m o c h a ,后来改称l i v e s c r i p t 。随着j a v a 的走红, n e t s c a p e 公司引进s u n 的有关概念,又将其改称为j a v a s c r i p t 。j a v a s c r i p t 、h t m l 与j a v aa p p l e t - - 起实现了一个w e b 页面中链接多个对象,与w e b 客户交互作用, 从而可以开发客户端的应用程序。j a v a s c r i p t 通过嵌入或调入到标准h t m l 语言中 实现,由浏览器解释执行【l 】。 j a v a 是s u nm i c r o s y s t e m s 于1 9 9 5 年推出的程序设计语言。最初的j a v a 语言被 称为o a k ,由在s u n 子公司f i r s tp e r s o ni n c 工作的j a k e sg o s l i n g ,b i l lj o y 等人主持 研制开发。o a k 的高效性、鲁棒性、平台无关性及面向对象的特点,使s u n 公司 意识到它非常满足i n t e r n e t 的需要,因此将其作为网络程序设计语言。j a v a 与 i n t e m e t 的结合为j a v a 的应用找到了合适的位置,从而使其得到了迅速的发展【2 】。 j a v a 程序的运行需要先进行编译生成中间代码,然后再通过j a v a 虚拟机解释执行。 因此,只要平台上装有j a v a 虚拟机,就可以运行j a v a 程序,从而实现了平台无关 性。 j a v a s c r i p t 和j a v a 在某些方面有类似之处,但是在底层实现原理上有很大不 同。归纳起来主要有以下三点区别【1 2 】: 1 j a v a s c r i p t 没有j a v a 所具有的静态类型,也没有严格的类型检查机制。 不过j a v a s c r i p t 支持大部分的j a v a 语言的语法和控制流结构。 2 j a v a 的类通过声明创建,其类型在编译阶段已经固定,而j a v a s c 邱t 支 持基于几个基本数据类型的运行时类系统,这几个基本类型包括数字类 型,布尔类型和字符串类型。 3 j a v a s c r i p t 的对象模型是基于原型( p r o t o t y p e b a s e d ) 的,它提供动态继 承,也就是说继承可以根据单个对象的不同而不同。它还支持不需要任 何声明的函数。而且函数还可以是对象的属性,作为宽松类型的方法被 调用执行。j a v a 是一种被设计为快速执行和类型安全的基于类 ( c l a s s b a s e d ) 对象模型的编程语言,对每个对象来说都与一个类和类 的一组方法相对应,运行时不能动态改变, 第二章相关技术研究 2 2 嵌入式操作系统 嵌入式系统以应用为中心,以计算机技术为基础,且软硬件可裁剪,适用于 对功能、可靠性、成本、体积、功耗有严格要求的专用计算机应用系统【7 1 。一般 的嵌入式系统由嵌入式微处理器、相关外围设备、嵌入式操作系统和应用程序组 成,各部分的依赖关系如图2 1 所示。 图2 1 嵌入式系统结构图 嵌入式操作系统作为嵌入式系统的核心,向下管理着所有的嵌入式系统资 源,向上为用户应用程序提供服务。由于嵌入式系统面向应用,面向产品,面向 用户,所以嵌入式操作系统相对于通用操作系统也有其自身的特剧引。 1 ) 精而小的系统内核,开销小,效率高,并可用于各种非计算机设备。 2 ) 具有开放性、可伸缩性的体系结构。 3 ) 实时性强,可用于各种设备控制。 4 ) 提供各种设备驱动接口。 5 ) 操作方便、简单,提供图形界面,追求易学易用。 6 ) 提供t c p ,id p i p p p p 协议支持及统一的m a c 访问层接口,为各种移 动计算机设备预留接口。 常见的嵌入式操作系统有以下几种: 1 s y m b i a no s s y m b i a n 是由摩托罗拉、西门子、诺基亚等几家大型移动通讯设备商共同出 资组建的一个合资公司,开发专用于手机的嵌入式操作系统。s y m b i a n 操作系统 在智能移动终端上拥有强大的通信能力,它是一个实时的、多任务的纯3 2 位操 作系统,具有功耗低、内存占用少等特点。它同时也是一个标准化的开放式平台, 任何人都可以为支持s y m b i a n 的设备开发软件【1 0 】。 2 p a 】mo s 6 第二章相关技术研究 p a l mo s 是全球最受欢迎的掌上电脑和智能电话操作系统之一。它占用的内 存空间非常小,因此基于p a l mo s 的掌上电脑可以运行众多应用程序,它还有很 强大的节能功能。p a l mo s 的数据是以数据库的格式来存储的,数据处理直接在 存储堆中进行。 3 嵌入式l i n u x l i n u x 为嵌入操作系统提供了一个极有吸引力的选择,它是一个和u n i x 相似、 以核心为基础、完全内存保护、多任务和多进程的操作系统。嵌入式l i n u x 可应 用于多种硬件平台,其高度模块化的特点使添加部件非常容易。相比其它嵌入式 操作系统,嵌入式l i n u x 具有的优势包括:开放源代码;内核小、效率高,更新 速度很快;在价格上极具竞争力j 。 4 q n x q n x 是一个实时的、可扩充的操作系统。它部分遵循p o s i x 相关标准,提 供了一个微内核以及一些可选的配合进程。该系统的微内核提供4 种服务:进程 调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行。 所有其它o s 服务,都实现为协作的用户进程,因此q n x 内核非常小巧( q n x 4 x 大约为1 2 k b ) 而且运行速度极快。这个灵活的结构可以使用户根据实际的需求, 将系统配置成微小的嵌入式操作系统或是包括几百个处理器的超级虚拟机操作 系统。 2 3 嵌入式浏览器 2 3 1 嵌入式浏览器的工作原理 浏览器主要通过h t t p 协议连接网页服务器来取得网页,h t t p 容许网页浏 览器提交请求信息到网页服务器以获取网页。现在,最常用的h t t p 是h t t p i 1 , 该协议在r f c 2 6 1 6 中被完整定义。 网页在服务器中的位置以u r l ( 统一资源定位符) 指示。例如以“h t t p :”开 头的u r l 代表通过h t t p 协议登陆。很多浏览器同时支持其他类型的u r l 及协 议,例如“邱:”表示f t p ( 文档传输协议) ,“g o p h e r :”表示g o p h e r 以及“h t t p s : 表示h t t p s ( 以s s l 加密的h 1 v r p ) 。 网页通常使用h t m l ( 超文本标记语言) 文件格式,并在h t t p 协议内以 m i m e 内容形式来定义。大部分浏览器均支持许多除h t m l 之外的文件格式, 例如j - p e g 、p n g 和g i f 图像格式,还可以利用外挂程序来支持更多文件类型。 在h t t p 内容类型和u r l 协议结合下,网页设计者便可以把图像、动画、视频、 第二章相关技术研究 声音和流媒体包含在网页中,或者让人们通过网页的方式来取得它们。 早期的网页浏览器只支持简易版本的h t m l 。专属软件浏览器的迅速发展导 致非标准的h t m l 代码的产生和浏览器的兼容性问题。现代浏览器 ( m o z i l l a o p e r a 和s a f a r i ) 支持标准的h t m l 和c i t m l ( 从h t m l 4 0 1 版本开始) , 但是i n t e r a c te x p l o r e r 仍然不完全支持h t m l4 0 1 及x h t m l 。现在,许多网站 都使用包括m a c r o m e d i ad r e a m w e a v e r 和m i c r o s o f tf r o n t p a g e 的所见即所得的 h t m l 编辑软件来构建。但是这些软件通常缺省产生非标准h t m l ,这在一定 程度上阻碍了统一标准的制定。 嵌入式浏览器的工作原理与上面所述的通用浏览器基本相同。所不同的是, 嵌入式浏览器由于其应用环境限制,往往选择一些特殊算法简化处理流程。这虽 然在一定程序上降低了软件的完善性,但却提高了性能。对于配置相对较低的嵌 入式环境来说,这种取舍是值得的。 2 3 2 浏览器处理流程 嵌入式浏览器m o z i l a r 的流程处理如图2 2 所示。 ( 开始 ) + 数据传输模块 记法分析模块 0 语法分析模块 l 图片解码模块j s 引擎模块c s s 模块 样式解析模块 一r 排版布局模块 0 显示模块 r结束、) 图2 2m o z i l a r 浏览器处理流程图 下面详细解释浏览器处理网页的工作流程,以及各个模块的工作原理【6 】: 第二章相关技术研究 1 数据传输模块根据u i 传递的请求地址提取协议类型字段,选择相应的 协议请求模块。对于远程w e b 服务器上的网页,数据传输模块通过 h t t p 协议获取网页数据。该模块将获取的数据保存在缓存中供其它模 块使用。 2 解析模块通过词法分析和语法分析,从缓存的文档数据流中提取出 h t m l x m l 标签和内部属性等数据,并对分离出的各个元素进行分析、 处理,建立d o m 树。 3 遇到图片标记时,传输模块获取图片对象后,由解码模块对图片数据进 行解压、还原。 4 j a v a s c f i p t 引擎( k e s ) 负责解释、执行网页文档中的j a v a s c r i p t 脚本。 它对脚本进行词法、语法、语义分析生成中间代码,并根据中间代码对 d o m 树进行操作、与浏览器进行交互。 5 c s s 模块接收由h t m l 引擎传递过来的样式,经解析提取出规则,保 存到样式库中。 6 样式解析完成后,样式应用部分为d o m 树中每个节点匹配、应用样式, 构造样式树。 7 排版布局模块为样式树中的每个b o x 计算大小、确定它们在网页显示区 的位置。 8 绘制部分调用浏览器显示层的绘制接口将网页的各个元素在相应位置 绘制出来。至此,整个打开网页的流程全部结束。 2 4j s 引擎优化技术 2 4 1j i t 技术基本原理 经过分析当前性能较高的j s 引擎,发现他们提高性能所采用的优化技术, 无一例外都包括了j i t 。c h r o m e 的v 8 引擎采用j i t ,把j a v a s c r i p t 编译成二进制 文件并放在内存中执行。s q u i r r e l f i s he x t r e m e 采用一种称为轻量级“线程上下文” 的j i t 编译技术来优化,比优化前的性能提升近1 5 倍。t r a c e m o n k e y 使用一种 基于t r a c e 技术的j i t ,性能提高近2 2 倍。可见,尽管它们实现j i t 的具体方法 不同,但是通过采用j i t 技术,其性能都有了大幅提升。 j i t 最先出现在j a v a 编译器中,其相关技术的发展和应用也基于j a v a 平台。 j i t 从原理上来讲非常简单,就是将由j a v a 编译器产生的字节码在运行期间动态 编译成机器代码,使其能直接在硬件平台上高效地执行。如果把所有的代码都编 9 第二章相关技术研究 译成机器代码,这势必会影响编译器的效率。随着j i t 技术的发展,出现了动态 编译技术,这种技术进一步提升了j i t 的性能。 动态编译的关键技术是热区( h o t s p o t ) 技术。实际应用中大部分程序往往 是2 0 的代码花费了8 0 的程序运行时间,热区技术就是要找出这2 0 的代码, 将其编译成本地代码并采用高效的优化技术对其进行优化,从而提高程序的运行 效率。 动态编译器包括解释器、即时编译器和测试器。当字节码指令被首次执行时 采用解释执行的方式,在运行过程中,测试器统计代码被执行的性能信息,如方 法被调用的次数及执行的时间,并根据一定的标准选择字节码指令,将其编译为 本地方法并进行优化。当该方法再次被执行时则直接执行它的本地方法。若方法 没被编译,则再次解释执行该方法。 热区技术的关键是确定热区。常见的方法是分析程序在运行时生成的p r o f i l e 文件,作代码级的统计。在生成的p r o f i l e 文件中记录了每一子程序内基本块的执 行次数,然后根据基本块的执行次数,标记出子程序内最高频率执行路径,之后 对它们进行编译优化l z j 。 确定热区的算法,最开始引入的是基于函数的方法。首先监视函数被调用的 次数,然后把调用次数与阈值相比较,一旦超标,则该函数成为热区。另一种方 法是a n d r e a lg a l 提出的基于t r a c e 技术的优化方法。该方法进一步缩小了热区 选择范围,只保留优化价值最大的代码段作为候选热区。传统的j i t 实现方法往 往需要很大的内存来存储j i t 运行过程所需的临时变量,而这种基于t r a c e 的优 化方法,由于大大缩小了优化范围,所需的存储空间骤减,使性能得到很大的提 升,所以适合应用于资源受限型环境。 由第2 1 节可知,虽然j a v a s c r i p t 与j a v a 有很大的差别,但是由于与j i t 密 切相关的变量类型问题可以使用一定的技术来处理,所以优化j s 引擎完全可以 使用j a v a 虚拟机所使用的j i t 技术。 2 4 2 基于t r a c e 的j i t t r a c et r e e = ( n ,p ) ,表示程序中循环体集合的有向图。其中n 代表节点( 指 令) 的集合,p 代表这些节点间的诸如 ( n i ,n i ) ,( 1 1 k ,n 1 ) ,) 的有向边。每一组有 向边( n i ,n i ) 表示指令n i 在指令n j 后立即执行,称边( n i ,n i ) 为前任边( p r e d e c e s s o r e d g e ) 。在图2 1 右图中n = 2 ,3 ,4 ,5 ) ,p = ( 2 ,3 ) ,( 3 ,5 ) ,( 2 ,4 ) ,( 4 , 5 ) ) 。虚线表示隐式返回边,不包括在t r a c et r e e 中。定义函数f ( n i ) = n ii ( n i , n j ) p ) ,指有前任边指向n i 所有节点( 指令) 的集合。如果f ( a ) 返回空,则称该 节点为锚节点。图2 3 中节点2 是一个锚节点。称始于锚节点终于锚节点的一个 l o 第二章相关技术研究 循环为一个t r a c e 。一个t r a c et r e e 中的所有t r a c e 都共享一个锚节剧1 5 】。 1 :c o d e ; 2 :d o i f ( c o n d i t i o n ) 3 : c o d e ; e l s e 4 : c o d e ; 5 : w h i l e ( c o n d i t i o n ) ; 6 :c o d e ; 图2 - 3 t r a c e 示例图 基于t r a c e 的j i t 优化的主导思想是只优化那些优化价值较大,即执行频率 较高的代码段。因为把字节码指令变成本地机器代码需要花费一定的时间和空 间,如果该代码执行频率不够高,那么额外花费的编译时间将不能被节省的执行 时间抵消。经过统计分析知,线性结构代码所占用的运行时间只占总运行时间的 很少比例,循环结构代码占了总运行时间的大部分比例。因此,循环结构代码是 所有程序设计中优化价值最大的部分,循环体成为基于t r a c e 的j i t 的优化对象。 基于t r a c e 的j i t 优化的第一步是发现t r a c e 热区( 即执行频率较高的循环 体) ,第二步将是把该热区构建成t r a c et r e e ,最后把t r a c et r e e 转变成相应的本 地机器代码。 2 4 3 基于函数的j i t j i t 技术首次提出的时候,将整个函数作为热区的备选单元。生成本地机器 代码时,采用c f g 的传统方法记录函数,最终结果是非线性指令流,因而运行 速度受限。随着t r a c e 技术的发展,出现了基于函数的j i t 技术。这种技术把调 用频率较高的函数作为热区的备选单元,采用类似t r a c e 的编译技术,生成s s a 格式的线性指令。 2 5 跨平台c + + 库n a n o j i t n a n o j i t r 2 0 1 是用于把l i r ( 1 0 w 1 e v e li n t e r m e d i a t er e p r e s e n t a t i o n 低层次中间代 第二章相关技术研究 码表示) 指令生成本地机器代码的跨平台c + + 库,由a d o b e 公司开发并捐献给开 源社区,现在由a d o b e 和m o z i l l a 共同维护。目前,n a n o j i t 的用户包括t a m a r i n j i t t 2 1 1 和t r a c e m o n k e y 。l i r 是基于s s a 的线性指令流,这与传统编译器所用的 中间代码非常相似,所以n a n o j i t 也采用传统的编译器所使用的常量传用,c s e ( 公 共子表达式消去) 等方法在生成本地机器代码时进行指令优化。 n a n o j i t 主要包括以下几个概念。 i r :带有保护指令的字节指令。保护指令由以下类型的指令生成:条件转换 指令、类型检测指令、函数调用类型检测以及其它一些需要在运行时检测的关于 本t r a c e 的预先条件。 l i r :是一种常见的三地址的线性s s a 代码,一条单一的l i r 指令称为l l n s 。 f r a g m e n t :代表一个线性的代码序列,一般在结尾处会跳转到另一个 f r a g m e n t 或指向这个f r a g m e n t 的起始位置。一个f r a g m e n t 包含的代码保存在一 系列相关的p a g e s 和g u a r d r e c o r d s ( 由这个f r a g m e n t 所属的f r a g m e n t o 分配) 中。 初始化时,f r a g m e n t 不包含任何p a g e s ,随着编译过程的进行,l i r 指令被不断 地插入到这个f r a g m e n t ,这时才分配p a g e 来保存这些指令。随后,当这个 f r a g m e n t 被汇编,将会分配p a g e 给由a s s e m b l e r 生成的这些本地代码( n l n s 值) 。 当销毁f r a g m e n t 的时候,p a g e s 将会返回以重用。 a s s e m b l e r :用于把l l n s 值转换成n l n s 值。也就是把l i r 指令转换成对应 的本地机器代码。另外,a s s e m b l e r 也用于修改现存的本地代码的f r a g m e n t ,这 是通过重写本地跳转指令到跳转到新的地址。也就是说,a s s e m b l e r 可以使控制 流从一个f r a g m e n t 到另一个f r a g m e n t ,或者从生成的本地代码到解释器。 f r a g m e n t o :用于管理f r a g m e n t ) l i r b u t i e r :用于保存l i r 指令; l i r b u f w r i t e r :用于生成l i r 指令并保存到l i r b u f f e r 对象中; l i r w r i t e r :对进入到l i r b u f f e r 的指令进行优化; n a n o j i t :c o m p i l e :把l i r b u f f e r k 中的指令转变成本地机器代码。 n a n o j i t 提供的用于生成本地机器代码的基本函数有下面几个: l i r w r i t e r :i n s o :用于生成无操作数指令; l i r w r i t e r :i n s l :用于生成单操作数指令; l i r w r i t e r :i n s 2 :用于生成双操作数指令; l i r w r i t e r :i n s l m m :用于生成立即数。 1 2 第三章j i t 模块总体设计 3 1 总体设计 3 1 1 设计目标 第三章j i t 模块总体设计 随着j a v a s c r i p t 的广泛应用,嵌入式厂商已经把j s 引擎的运行性能看作衡 量浏览器性能水平的主要指标之一,所以提高k e s 的运行性能是本次优化的核 心目的。 在复杂多样的嵌入式环境下,嵌入式软件只有具备良好的适应性,才能占领 更大的市场份额。因此提高k e s 的适应性也是本次优化的主要目的。 把同类j a v a s c r i p t 程序分别在k e s 和其它同类j s 引擎中运行,经过分析其 运行结果得知,k e s 处理线性指令的速度跟其它j s 引擎相比没有太大的区别。 但是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论