论文部分内容阅读
近年来,为了提供更丰富的互联网交互功能,Web应用程序广泛使用JavaScript作为客户端编程语言,JavaScript程序的的执行性能变得日趋重要,JavaScript引擎的性能优化成为当今浏览器领域的研究热点之一。本文面向PKUnity86系统芯片,使用软硬件结合的方法开展JavaScript引擎的性能分析与优化工作,发现在x86平台下,V8 JavaScript引擎仅在处理器支持SSE2扩展指令系统时才能高效执行JavaScript程序。由于PKUnity86系统芯片暂不支持SSE2扩展指令系统,因此本文旨在设计和实现一种在无SSE2指令支持情况下的JavaScript引擎优化策略。本文主要工作如下: 本文对当前主流的JavaScript引擎的架构和相关优化技术进行了分析和总结;通过评测基准程序对JavaScript引擎的性能进行量化对比分析,选定性能较优的V8 JavaScript引擎作为研究对象,深入分析了V8引擎的内部模块结构和技术特点;发现V8引擎基于SSE2扩展指令系统的本地优化代码生成不适用于PKUnity86系统,而基于方法的即时编译器直接将抽象语法树编译成本地代码,虽然减少了编译延迟但缺少优化,导致JavaScript程序执行性能显著降低。 本文在V8引擎的即时编译器基础上,设计和实现了一种基于中间代码分析和寄存器分配的优化策略。将抽象语法树转化为静态单赋值形式(Static SingleAssignment,SSA)的高级中间表示,结合热点函数监测机制对中间代码进行优化;针对PKUnity86平台特性采用内存映射方法改进了线性扫描寄存器分配算法;最后使用FPU浮点指令、MMX扩展指令与x86通用指令重新设计并实现了适合PKUnity86系统的本地代码生成机制,以实现对JavaScript程序性能的优化。 在此基础上,本文将优化后的V8引擎整合到Chromium浏览器中,并使用Sunspider和Octane基准测试程序以及微博、在线邮箱等JavaScript代码丰富的Web应用程序对优化后的V8引擎进行性能评测。实验结果表明,相比于优化前,优化后的V8引擎在PKUnity86系统上Sunspider整体加速约为66%,Octane整体加速约191%;微博、在线邮箱模块的加载和操作延迟减少了约50%。