英语原文共 19 页,剩余内容已隐藏,支付完成后下载完整资料
PHP和JSP作为服务器端脚本语言的性能比较
Scott Trent, Michiaki Tatsubori, Toyotaro Suzumura, Akihiko Tozawa, and Tamiya Onodera
PHP和JSP作为服务器端脚本语言的性能比较
Scott Trent, Michiaki Tatsubori, Toyotaro Suzumura, Akihiko Tozawa, and Tamiya Onodera
IBM东京研究中心
16-23-14 Shimotsuruma Yamato-shi,日本242-8502
{trent,mich,toyo,atozawa,tonodera}@jp.ibm.com
摘要:动态脚本语言PHP在实现轻量级Web应用程序方面非常流行,它被广泛用作Web服务器的服务器端脚本语言。对比PHP和JSP的性能,为此,我们采用SPECweb2005基准测试,它提供了三个应用场景在PHP和JSP实现。本文介绍和对比了SPECweb2005性能基准测试对PHP和JSP使用流行的Web服务器,Apache和Lighttpd配置执行的结果不同。尽管在PHP引擎的微基准测试观察解释执行开销,SPECweb2005基准实验结果产生有价值的性能数据的Web服务器实现。脚本语言的运行时是端到端的性能效率。然而,一旦仔细设计和调整,语言运行时比Web服务器性能的一个瓶颈本身不。
关键词:PHP、JSP、specweb,标杆管理,Web服务器
1 介绍
动态脚本语言PHP(PHP超文本预处理器)在实现轻量级Web应用程序方面非常流行,广泛用于访问数据库和其他中间件。2007年10月由安全空间进行的Apache模块流行调查表明,37%的Apache服务器启用了PHP支持[ 11 ],使其成为最受欢迎的Apache模块10个百分点。企业正在迅速实现面向服务的体系结构环境与动态脚本语言(如PHP 5)的强大结合。然而,我们认为仍然存在涉及PHP的关键性能问题,有待调查。
本文主要研究动态脚本语言在实现web服务器前端接口中的应用。与此对应的是,行业标准的Web服务器性能的基准SPECweb2005利用PHP和JSP(JavaServer Pages)的方式。在这种情况下,脚本用于实现动态页面生成,而不是实现复杂的业务逻辑。这与传统的基于JSP的业务逻辑实现的传统用法形成对比。虽然对动态Web内容的研究很多,但本文对这些研究进行了补充,并对PHP进行了详细的分析。例如,以下关于CGI(公共网关接口)的性能研究通过耶格和麦克格拉斯回到1995基于动态内容的Web服务器,研究人员和从业者一直在研究最近的动态网页生成技术[3, 13, 15,17]。然而,这些工作处理servlet前端实现相对复杂的业务逻辑的应用场景。
虽然华纳和沃利讨论的重要性也使用PHP和SPECweb2005 [ 18 ],据作者所知,本文是SPECweb2005实验结果使用PHP和JSP的详细分析发布第一。基于PHP和JSP性能SPECweb2005详细分析了本文使设计者和实施者了解Web服务器的相对性能和不同版本的PHP和JSP配置吞吐量。
本文的其余部分组织如下。第2节讨论了多层Web服务器架构和使用PHP和JSP的轻量级前端方法。第3节报告了我们关于PHP和JSP语言运行时微基准性能的研究结果。4部分详细介绍我们的方法- SPECweb2005基准测试技术,环境,和测试配置。5节分析SPECweb2005板凳标记的吞吐量结果,CPU使用情况分析,以及相关的性能指标。第6节讨论了这些结果的重要性。第7节涵盖了相关工作,其次是我们在第8节中得出的结论。
2 多层Web服务器体系结构:轻量级前端使用php/jsp
开发人员通常使用PHP来实现动态Web内容生成器的前端接口,它与Web服务器软件和后端服务器相结合,以提供动态内容。Web服务器直接处理静态内容的请求,并将动态内容的请求转发给动态内容生成器。动态内容生成器由后端服务器支持,执行代码,实现Web站点的业务逻辑并存储动态状态。后台服务器可以实现为直通数据库,也可以是处理Web站点业务逻辑的更复杂的服务器。前端实现可能因重业务逻辑处理程序不同于组成后端服务器接收的内容的轻量级客户端而异。
本文重点研究多层Web站点开发场景,利用这种轻量级前端,由一个或多个重量级后端支持。当考虑面向服务的环境时,这种假设是合理的,PHP脚本用于实现其他地方提供的服务的“混搭”,除了简单的Web站点(如PHP脚本只是对数据库的包装器)这样的情况。在本文所描述的场景中,动态内容生成器除了页面组合之外,还提供了客户端实现。它通过一个网络使用HTTP或应用程序/中间件特定协议等标准协议连接到后端服务器。
在实现这样的前端时,JSP技术可以被看作是PHP的替代方案。虽然这是java servlet框架的一部分,开发人员通常使用JSP实现轻量级前端。PHP和JSP都允许开发人员编写HTML嵌入代码。事实上,虽然有PHP和java语言的内在差异,PHP脚本和JSP文件的使用是非常相似的。
详细介绍了实验的目的是测量的轻量级前端动态内容生成写在PHP和JSP与流行的Web服务器,如Apache,Lighttpd的性能。这种Web服务器体系结构场景涉及访问Web服务器的用户,它们使用纯静态HTML编写的页面,JSP和PHP脚本将脚本语言与HTML代码混合在一起。本文中假定的配置是典型的,其中Web服务器软件,如Apache,分别使用HTML、JSP和PHP等后缀区分纯HTML、JSP和PHP。HTML代码直接返回到请求最终用户的Web浏览器,其中JSP和PHP页面分别由Tomcat脚本引擎和PHP运行时引擎分别解析,它们都提供纯HTML,并将其转发给远程系统的最终用户。(类似于简单的JSP和PHP脚本的示例比较,以及由此产生的HTML代码可以在表1中看到)JSP和PHP之间的一个共同点是,执行良好的实现有动态编译和缓存的字节码。例如,java运行时使用Tomcat的脚本引擎,我们用更好的表现,当实时(JIT)编译器的功能来创建有效的缓存本地运行时代码。同样,我们使用Zend的PHP运行时的表现也明显优于当替代PHP缓存(APC)启用,其中APC存储PHP字节码编译的脚本源代码共享内存中以便将来重用。
表1.PHP和JSP脚本生成HTML代码示例
PHP脚本 |
JSP脚本 |
得出的HTML代码 |
lt;htmlgt; lt;bodygt; The date is lt;?php echo date(DATE_RFC822); ?gt; lt;/bodygt; lt;/htmlgt; |
lt;htmlgt; lt;bodygt; The date is lt;%= new java.util.Date(); %gt; lt;bodygt; lt;/htmlgt; |
lt;htmlgt; lt;bodygt; The date is Tue, 1 Jan 08 12:00:00 lt;/bodygt; lt;/htmlgt; |
3 语言运行时性能微基准
在语言运行水平了解PHP和java性能特征的区别,我们比较以下发动机采用了一系列的微基准测试:
minus;php4.4.7
minus;php5.2.3
minus;java5通过及时(JIT)编译(ibmj9vm1.5.0build2.3)
minus;java5未通过及时(JIT)编译(同上)
PHP语言框架允许开发人员用C语言编写的库函数扩展语言,这些函数被称为“扩展”,然后可以在PHP脚本中使用。PHP运行时为字符串处理、文件处理、网络化等提供了多种扩展。由于我们的第一个目标是理解PHP运行时本身的性能,所以我们在不使用扩展的情况下进行了实验。我们开发了以下微基准:
minus;排序100个整数的快速排序基准,
minus;一个编辑的基准衡量两个字符串的56个字符之间的相似性,
一种斐波那契基准,它计算具有两个任意起始值的斐波那契数列中的第十五个值。
这些PHP基准是完全用PHP语言原语实现的,避免了使用PHP扩展。java版本也集中于使用语言原语,而不是标准的类。我们比较了每个引擎执行10000次测试的总运行时间。在测试之前,我们还额外进行了10000次基准测试作为热身。这可以防止java即时编译开销在java测试评分的影响。我们跑的英特尔奔腾4处理器的实验在3.40 GHz的3GB RAM内存,与Linux 2.6.17内核。
此测试演示了所测量的脚本语言和实现之间的性能差异。图1中的实验结果表明,“java 5 JIT编译”表现最好,其次是“java 5没有JIT编译”、“PHP 5.2.3”、和“PHP 4.4.7”
图1. 纯脚本基准性能
在所有测试例。java 5 JIT演示了近三个数量级更好的性能由于有效地生成本地代码使用。同样显而易见的是,PHP 5.2.3对PHP 4.4.7与测量计算的两到三倍的性能提升。
其次确定PHP扩展性能的影响与java类的方法相比,我们开发并测试了三个额外的微基准:正则表达式匹配,MD5编码,和编辑的比较。正则表达式匹配,Perl兼容正则表达式的扩展(通过preg_match()功能)中使用PHP和java.util.regex封装用于java。MD5编码,MD5扩展使用PHP和java.security.messagedigest用于java。这个实验没有比较完全相同的逻辑,而是表明PHP扩展的使用与即时编译使用java的竞争,如图2所示。
图2. 脚本类库/扩展基准性能
尽管实验结果显示纯脚本三订单的java和PHP的各种实现的性能之间的幅度差,PHP扩展的使用(C语言编写)和编译java类库显示更少的变化。在极端情况下,正则表达式测试显示五倍左右的java和PHP之间最大的性能差异,在另一端,MD5测试结果几乎相当于java和PHP之间。因此,使用PHP等有效的库函数,如用C编写的PHP扩展,可以克服解释脚本语言(如PHP)固有的性能风险。
4 PHP和JSP SPECweb2005基准方法
虽然微基准测试是简单的实施和分析,因而常用于性能分析,接下来我们使用行业标准的SPECweb2005基准测试了解影响不同版本的PHP和JSP的配置在更现实的情况下。SPECweb2005基准,由标准性能评估公司(SPEC),是由三个测试场景,基于共同的网站使用:银行网站的情况下,一个电子商务网站的情况下,和一个支持网站的情况。银行站点场景允许具有安全套接字层(SSL)库的典型加密帐户事务,其中60%的数据是通过动态Web页面生成的。电子商务购物网站允许用户浏览目录和“使用加密和未加密的数据购买”的产品。如表2所示,在实验中,大约5%的电子商务场景中的数据是通过SSL加密传输的,70%的传输数据是通过动态网页生成的。最后,供应商的支持网站提供下载大加密支持文件如手册和软件。由于这个场景主要允许访问大的非机密静态文件,所以没有加密,只有12%的传输数据是通过动态网页生成的。自从SPECweb2005是PHP和JSP实现,它特别适合于两种语言之间的性能比较。然而,因为每一个正式发表的结果作为2008夏季SPECweb2005基准使用JSP比PHP [12]进行,本文提供了实现一个独特的比较,这是考虑到基于PHP的Web服务器的普及价值的真实世界。
表2. 实验测得的数据传输加密和动态场景每个SPECweb2005百分比
银行 |
电子商务 |
赞助 |
|
加密数据百分比 |
100% |
4.4% |
0% |
动态数据,例如脚本输出百分比 |
59.5% |
71.6% |
11.7% |
一个典型的SPECweb2005测试床有多个客户机的主要客户提供控制在测试系统上的负荷(SUT)模拟几百到用户访问网站的情况下成千上万。虽然多个软件组件可以在同一物理系统上运行,但高层次的分发是提供现实环境的理想选择。例如,22个物理的客户平均用在正式出版SPECweb2005得分[12]。为了反映现代多层Web服务器架构,SPECweb2005使用一个或多个机器作为后端模拟器(besim),仿真功能的“后端”的数据库服务器。
4.1 SPECweb2005基准测试环境
我们用一个单一的系统在测试机器上运行的Web服务器,服务器上运行一个besim后端仿真引擎,主要的客户机,客户机和三专用。这些计算机通过千兆以太网连接。测试下的系统是IBM intellistation M Pro 3.4 GHz Xeon处理器运行Fedora Core 7(内核2.6.23),Apache 2.2.6、和lighttpd 1.4.18。Apache Tomcat被用作JSP容器[1]。PHP 5.2.4,Tomcat 5.5.25分
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[22567],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。
您可能感兴趣的文章
- 饮用水微生物群:一个全面的时空研究,以监测巴黎供水系统的水质外文翻译资料
- 步进电机控制和摩擦模型对复杂机械系统精确定位的影响外文翻译资料
- 具有温湿度控制的开式阴极PEM燃料电池性能的提升外文翻译资料
- 警报定时系统对驾驶员行为的影响:调查驾驶员信任的差异以及根据警报定时对警报的响应外文翻译资料
- 门禁系统的零知识认证解决方案外文翻译资料
- 车辆废气及室外环境中悬浮微粒中有机磷的含量—-个案研究外文翻译资料
- ZigBee协议对城市风力涡轮机的无线监控: 支持应用软件和传感器模块外文翻译资料
- ZigBee系统在医疗保健中提供位置信息和传感器数据传输的方案外文翻译资料
- 基于PLC的模糊控制器在污水处理系统中的应用外文翻译资料
- 光伏并联最大功率点跟踪系统独立应用程序外文翻译资料