`
yunzhongxia
  • 浏览: 640226 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaScript 性能优化技术

 
阅读更多

随着Google Chrome的发布,WEB应该说是老树发新芽,在技术本身并没有突破的情况下,每一个环节都在以更快的速度进行前进,譬如:

  1、JavaScript。现在每一个浏览器都在比较谁的执行速度更快,在你追我赶的过程中,毫无疑问,WEB变得更加快速,应用的能力也有越来越强大了。IE6、FF2的时代在现在回顾起来,已经变成老牛拉车的"历史"了。

  2、WEB标准化的速度也越来越快,CSS、HTML5的普及越来越加速,手机也从WAP快速的向WEB标准看齐。原来更多的WEB开发向IE倾斜的趋势,现在更多的向标准化倾斜。

  3、与Flash的争斗,尤其是apple的旗帜鲜明的不支持Flash的战斗,使得HTML5的职能从传统的文字图片迅猛的向2D、动画、视频等领域扩展,私有技术将越来越困难。

  所有的这些,都意味着WEB正在朝着第2春进行努力。本文则试图收集一下目前各主流浏览器的JavaScript加速机制,尝试探讨未来JavaScript能走多远?

  Firefox 3.6 Trace JIT 技术

  Firefox在Chrome的压力之下,迅速的发布了TraceMonkey引擎,相关的技术文档那个可以参考:http://www.ics.uci.edu/%7Efranz/Site/pubs-pdf/ICS-TR-06-16.pdf

  这个技术的特点是:

  1、JS解释器首先将源代码转变成为JavaScript字节码(LIR),每一个字节码都是SSA(Static Single Assignment)的。这个字节码在某种格式上与Java Bytecode是类似的。不同的是,JavaScript字节码缺乏类型信息,因此,在解释的过程中,需要根据当前的数据,进行选择性的处理。因此,每条指令其实都是涉及到更为复杂的运行时类型检查、动态分派的。

  2、TraceMonkey首先以解释的模式运行指令,但对loop(向后跳转)进行特殊关注:每一个向后跳转指令意味着一次循环的开始,TraceJIT关注的是对循环的优化,当一次循环开始时,TraceMoney试图对一次循环的所有指令进行跟踪,拉出一条平坦的执行线索(trace tree)。

  3、每一条执行线索,对其内部的类型信息,已经进行了一个假设,在这条线索执行过程中,相关的字节码实际上可以理解为已经替换为类型化的字节码(类似于Java的Bytecode)了。这个类型化的字节码再经过简单的JIT编译后,直接以机器码的方式执行。在线索执行开始时,会对类型信息进行检查,如果出现类型不匹配,则可能产生一个新的执行线索。

  4、执行线索内在的包含了method inline等技术。

  应该说,这种Trace技术,与以往的method level JIT相比,是完全不同的。在适合的应用里,Trace JIT相比V8等,还会有更大的执行效率提高。

  V8

  Chrome V8毫无疑问是本次浏览器大战的导火索,其功过还需要时间来验证。在http://code.google.com/intl/zh-CN/apis/v8/design.html中描述了V8的优化机制:

  Fast Property Access。快速对象属性访问。其特点是将JS对对象属性的访问,从一个动态的查找过程转换成类似于Java/C++的静态访问。毫无疑问,在JavaScript中,对象属性访问是最为频繁的一类操作,这个动态查找的过程其实是相当之消耗时间的。

  动态机器码生成。这个也是与快速属性访问相关的。它把动态的JS对象转变为一个类似于Java的静态布局对象。

有效的GC。V8提供的是一个 stop-the-world, generational, accurate的GC机制。而FF提供的则不是一个分代的GC。在实际应用中,分代的GC相比不分代的GC显然具有更高的效率。这一点,也是Java Hotspot所必须的。

  其它的,Opera 10.50号称推出了世界上那个最快速的JS引擎,不过,由于没有文档资料,暂时并不清楚其内部机制。

  预测:

  FF的优化机制和V8的优化机制是不一样的,两者完全是可以互补的。因此,可以想象,如果将V8的优化机制,如快速对象属性访问、分代GC等引入进来,结合Trace JIT技术,相信速度会有更大的提升。同理,对于V8而言,如果将Trace技术引入进来,对运行时的类型进行更准确的预测,那么,执行速度应该也有更大幅度的提升。

  综上,这些优化技术赋予了JavaScript更为强大的处理能力,使得浏览器可以更为快速的"下载执行"更大型的应用。使得原本需要在"native"语言中完成的功能,现在开始,可以在脚本语言中支持。

分享到:
评论

相关推荐

    JavaScript 性能优化小结

    随着 Web2.0 技术的不断推广,越来越多的应用使用 JavaScript 技术在客户端进行处理,从而使 JavaScript 在...在使用JavaScript中我们通常会考虑其性能问题,因此将日常总结的关于JavaScript性能优化的方式总结出来,以

    前端性能优化知识图谱指导

    JS性能优化是指在JavaScript代码的编写和执行过程中,通过一系列的优化策略和技术手段,提高代码的执行效率和性能,从而提升网页或应用程序的响应速度和用户体验。 优化JS性能的方法包括但不限于以下几个方面: 代码...

    Web性能优化系列 10个提升JavaScript性能的技巧

    但 Javascript 性能优化绝不是一种书面的技术,Nicholas 的技术演进列出了10条建议,帮助你写出高效的 JS 代码。 1. 定义局部变量 当一个变量被引用的时候,JavaScript将在作用域链中的不同成员中查找这个变量。作用...

    SQL查询安全性及性能优化

    开发是对性能考虑不多【技术差、项目工期紧等原因没有考虑性能问题】 系统运行中,数据量扩大,访问量增多,蹩脚的SQL危害开始显露 低效SQL的危害 系统响应变慢,软件开发中的8秒定律,当打开一个软件或网页超过...

    JavaScript性能优化之小知识总结

    所以能无法达到和C/Java之类的水平,限制了它能在客户端所做的事情,为了能改进他的性能,我想基于我以前给JavaScript做过的很多测试来谈谈自己的经验,希望能帮助大家改进自己的JavaScript脚本性能。 前言 一直在...

    JavaScript脚本性能的优化方法

    所以能无法达到和C/Java之类的水平,限制了它能在客户端所做的事情,为了能改进他的性能,我想基于我以前给JavaScript做过的很多测试来谈谈自己的经验,希望能帮助大家改进自己的JavaScript脚本性能。 语言层次方面

    JavaScript模式【英文版】.pdf

    《JavaScript模式》是由JavaScript专家斯特凡洛夫撰写,Stoyan是Yahoo公司的资深技术员,他还是YSlow2.0(一个web性能优化工具)的技术架构师。同时还可以学到一些反模式,一些常见的编程方式,这些编程方式引发的...

    jQuery性能优化指南

    本文用简单的语言介绍了在使用jQuery过程中的一些优化技术。

    基于JavaScript的WebGIS前端开发及优化

    近年来网站客户端开发规模越来越大并且有很多由AJAX开发的复杂页面, 系统中的客户端脚本大量增加,前端开发就产生了诸如代码量大、组织困难、难 ...把前端优化技术 应用到项目实现中,具体分析了各自的性能优化效果。

    网络篇 2:图片优化——质量与性能的博弈(2).md

    JavaScript》](https://book.douban.com/subject/5362856/)这样历久弥香的经典之作,也可能是搜索引擎聚合给你的一篇又一篇以性能优化为主题的个人或团队实践而来的“私货”。至少当我确定自己的研发方向、并接到第...

    《高性能网站建设指南》

    重点关注网页的行为特征,阐释优化Ajax、CSS、JavaScript、Flash和图片处理等要素的技术,全面涵盖浏览器端性能问题的方方面面。在《高性能网站建设指南》中,作者给出了14条具体的优化原则,每一条原则都配以范例...

    高性能网站建设指南.part1.rar

    重点关注网页的行为特征,阐释优化Ajax、CSS、JavaScript、Flash和图片处理等要素的技术,全面涵盖浏览器端性能问题的方方面面。在《高性能网站建设指南》中,作者给出了14条具体的优化原则,每一条原则都配以范例...

    高性能网站建设指南(pdf).part2

    重点关注网页的行为特征,阐释优化Ajax、CSS、JavaScript、Flash和图片处理等要素的技术,全面涵盖浏览器端性能问题的方方面面。在本书中,作者给出了14条具体的优化原则,每一条原则都配以范例佐证,并提供了在线...

    第三方广告代码稳定性和 性能优化实战

    该文档由淘宝广告技术部李穆撰写的演讲PPT,讲述了第三方广告代码的稳定性和性能优化方面的内容,如果你从事广告联盟行业的,读完此PPT一定会有所体会,一些javascript的问题一定也是遇到过的,如果你只是一个web...

    高性能网站建设指南

    重点关注网页的行为特征,阐释优化Ajax、CSS、JavaScript、Flash和图片处理等要素的技术,全面涵盖浏览器端性能问题的方方面面。在《高性能网站建设指南》中,作者给出了14条具体的优化原则,每一条原则都配以范例...

    关于编写性能高效的javascript事件的技术

    那么现有的优化技术已经不能对你开发的网站产生的质的飞越,为了让我们开发的网站性能比别人的网站更加优秀,我们需要更加深入的独立思考,储备更加优秀的技能。Javascript里的事件系统是我想到的第一个突破点。为...

Global site tag (gtag.js) - Google Analytics