返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP与JSP的性能测试比较
  • 891
分享到

PHP与JSP的性能测试比较

2023-06-17 13:06:19 891人浏览 独家记忆
摘要

小编给大家分享一下PHP与jsP的性能测试比较,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!测试环境:◆硬件:P4 2.4G,1G内存◆软件:windowsXP+

小编给大家分享一下PHPjsP的性能测试比较,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

测试环境:

◆硬件:P4 2.4G,1G内存

◆软件:windowsXP+Apache2.0.54+php4.4.0+Mysql4.1.14+Tomcat5.0.28

一.算术运算

a.测试标准

循环N次,并做整型自加运算。

b.测试代码

PHP与JSP的性能测试比较

测试结果(单位:毫秒)

PHP与JSP的性能测试比较

测试结果说明:m-n表示主要波动范围介于m和n之间;n表示出现次数非常之多的数值或平均值,m(x,y)表示偶尔会出现x,y。以下相同。

c.结论

Java的算术运算,优化得很好,估计是直接的对应CPU的指令,数值再大,算术运算性能都很平稳。需要注意的是,long的运算时间要比int的运算时间要长一些(毕竟是32位的系统),所以,在无需用到long时,尽量不要用long,而用int.

PHP是弱类型的变量,算术运算很不尽人意,估计不是直接对应机器码的算术运算。PHP算术运算的过程猜测如下,在运算前需要检测变量是否是数值,并要将非数值转换成数值,比如,PHP可以做这样的运算:100+"zhoutang",结果等于100.正是因为是弱类型语言,加上运算前的检测和转换,所以才导致算术运算的性能低下。PHP的单次运算时间比较稳定,大概每10000次算术加运算花费的时间约为3.5ms

不同的运算方法,也对性能有影响。

二.字符串运算

a.测试标准

字符串连接运算对比。

b.测试

PHP与JSP的性能测试比较

测试结果(单位:毫秒)

PHP与JSP的性能测试比较

c.结论

Java的字符串是用对象处理,很明显,在字符串的比较过程中,Java比PHP差很远。(因为字符串操作,很大部分要做连接,这里只比较连接运算,另外粗略比较了一下substring,两者的差别不是很大)

PHP的字符串运算,估计很多是直接调用C的字符串函数,所以效率会高很多。在做web开发中,字符串的连接操作还是很频繁的(包括很多时候生成sql字符串),所以,在算术运算和字符串运算两个方面,Java(JSP)优势不明显,与PHP各有所长。

三.数据库查询

a.测试标准

循环N次做数据库打开,查询,关闭操作。主要对JSP直接连数据库,JSP连接池连数据训,PHP直接连数据库,PHP持久连数据库做比较。

b.测试代码

JSP   String dbUrl, dbUser, dbPwd, strSQL;  dbUrl = "jdbc:Mysql://localhost:3306/zhoutang";  dbUser = "root";  dbPwd = "";  strSQL = "update tblUser set UserLC=UserLC+1 where UserID=100";   Class.forName("com.mysql.jdbc.Driver");  Connection con;  Statement stmt;   int i = 0;  while (i < XXX) {        con = DriverManager.getConnection(dbUrl,dbUser,dbPwd);        stmt = con.createStatement();        stmt.executeUpdate(strSQL);        stmt.close();        con.close();        stmt = null;        con = null;        i++;  }
JSP连接池    Context ctx = new InitialContext();  DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysql");   String strSQL = "update tblUser set UserLC=UserLC+1 where UserID=100";   Connection con;  Statement stmt;   int i = 0;  while (i < XXXX) {        con = ds.getConnection();        stmt = con.createStatement();        stmt.executeUpdate(strSQL);        stmt.close();        con.close();        stmt = null;        con = null;        i++;  }
PHP    $dbHost = "localhost";  $dbUser = "root";  $dbPwd = "";  $dbName = "zhoutang";  $strSQL = "update tblUser set UserLC=UserLC+1 where UserID=100";   $i = 0;  while ($i < XXXX) {        $link = mysql_connect($dbHost, $dbUser, $dbPwd) or die('Could not connect: ' . mysql_error());        mysql_select_db($dbName);        mysql_query($strSQL);        mysql_close($link);        $i++;  }
PHP持久连接    $dbHost = "localhost";  $dbUser = "root";  $dbPwd = "";  $dbName = "zhoutang";  $strSQL = "update tblUser set UserLC=UserLC+1 where UserID=100";   $i=0;  while ($i< XXXX) {        $link = mysql_pconnect($dbHost, $dbUser, $dbPwd) or die('Could not connect: ' . mysql_error());        mysql_select_db($dbName);        mysql_query($strSQL);        mysql_close($link);        $i++;  }

测试结果(单位:毫秒)

PHP与JSP的性能测试比较

c.结论

普通连接,Java连Mysql的速度是要比PHP慢的一倍左右。Java使用连接池技术,性能提升非常明显。

PHP使用的持久连接(pconnect)性能即然相当于Java的连接池,结果实在让人不可思议,本来挺担心PHP连数据库的,因为没连接池可用,特意在网上找了一些资料,没发现PHP可用的连接池,相关提法都很少,很多PHP程序员甚至没听过这概念,这样的结果,确实让我也大吃一惊。不过,话说回来,pconnect的原理,和连接池差不多的,都是程序关闭连接,但PHP并不真正关闭,再次打开时,直接使用可用的连接。但是,PHP的实现确实比Java方便多了,只需加个字母,就轻易实现,Java则麻烦一些,我配置Tomcat的连接池都费了些时间,按官方文档,在tomcat5.0.28下没配置成功,在CSDN上面,也看到很多新手发出求救,很多配置不成功的,***自己摸索出来了,配置方法可参考我的Blog。

如果将连接数据库和关闭数据库的操作,移到循环外面,刚PHP和JSP的执行时间都差不多,循环50次约16ms。可见,数据库操作中,打开连接是相当耗资源的,其它操作,与语言差别不大。JSP在连接数据库的时候,开销比PHP大很多。(这里特意将打开数据库操作放在循环体做比较)

四.文件操作

WEB开发过程上,文件操作一般不可缺少,大多数Web系统都会上传或对文件操作。

a.测试标准

综合测试各种文件操作,测试的过程是首先判断某文件是否存在,存在的话删除文件,再新建文件,再往文件里写一定长度的内容。整个过程循环N次。

b.测试结果

JSP测试代码:   String fileName = "jsp.txt";  String filePath = request.getRealPath("");   int i = 0;  int j = 0;  while (i < XXXX) {        File f = new File(filePath,fileName);         if (f.exists()) {               f.delete();        }        f.createNewFile();        FileWriter fw = new FileWriter(filePath + File.separator + fileName);        j = 0;        while (j < 2 * i) {              fw.write(j + "\r\n");              j++;        }        fw.close();        i++;  }
PHP测试代码:   $fileName = "./php.txt";   $i = 0;  while ($i < XXXX) {        if (file_exists($fileName)) {              unlink($fileName);        }        $handle = fopen($fileName, "x");        $j = 0;        while ($j < 2 * $i) {              fwrite($handle,$j."\r\n");              $j++;        }        fclose($handle);        $i++;  }

测试结果(单位:毫秒)

PHP与JSP的性能测试比较

c.结论

这个测试结果有点意外,本以为PHP会大胜的项目,却让JSP***,循环次数大的时候,PHP比JSP慢一倍。有点不可思议。

五.总结

总体来说,PHP与JSP在性能上,差别不了很远,各有优势。JSP虽是编译执行,但却要通过JVM,性能会有所下降。从功能上说,JSP的相对强大一些,主要是因为有Java的支撑,在一些很大型的企业中,用JSP有优势(主要是有Java支撑),但一般的企业或一般的应用,PHP完全可以应付。另外,PHP比JSP更容易上手。另外,个人说为,做同样的WEB系统,PHP相对JSP来说,复杂度可能会低一些(JSP所有的技术都用上的话,估计架构环境,系统设计都够麻烦的,而且,Java体系各种技术和产品比较开放和松散,文档相对来说有点杂乱,至少我认为Tomcat的文档做得没有Apache,PHP的好。)。

PHP小巧而灵活,JSP就显得宠大,而且,概念众多,个人认为Java体系有故意夸大技术复杂度的嫌疑。

此外,PHP还有Zend可用,本来想装上Zend再来测试一番的,这几天Zend的网站老是上不去。据有关测试表明,Zend能提升PHP的性能大约100%左右。也有说30-40%的,也有说600%的。估计是算术运算能提升个档次,其它操作,最多提升30-40%左右。

在整个测试过程中,每个取值我都会测多次,一般10s以下的运算,我至少测10次,10s以上的运算,至少测3次。PHP的测试结果都比较稳定,每次测出的结果差别不是很大,从统计学的角度来说,方差比较小。JSP相对来说,偶尔会出现一些值,偏离平均值比较远,而且,由于需要编译的原因,***执行一般时间比较长(虽然从程序里显示的数值看不出***执行的时间差距,但在程序开始执行前,编译需要点时间。编译后才开始执行,所以程序显示的结果看不出来。),所以,JSP的测试,没取***运行的结果。

另外,在测试连接数据库的过程中,由于一时疏忽,忘了在循环体内i++,导致出现死循环。所以,也特意做了几个死循环测试。算术运算测试,JSP死循环时,浏览器点了停止按钮,tomcat仍继续执行,CPU一直是100%,只有在任务管理器里停了tomcat,才得以停止死循环;PHP算术运算死循环,由于php.ini里有设置程序执行的最长时间和***内存,所以,死循环能够自动结束。数据库连接死循环,JSP在循环大概900多次后,出现异常,报错,提示无法连接;PHP循环1500次后,仍然没有结束,只好在任务管理器里结束apache进程(我的php.ini设置PHP最长执行时间为300秒)。

六.其它环境简单测试

以上数据只能做为参考,同样的程序,在其它配置的系统,我也做了简单的测试:

I.p4 2.4G,512M DDR,Windows server2000的工作机

(安装东西比较多,比较乱,运行一年多没重装,由于是工作机,所以操作系统对应用程序优化,而不是对后端服务优化;所测得的数据,比XP下测得的数据要大很多,比如PHP连接Mysql循环500次,大约需要16000ms。),粗略的测试的结果是:

算术运算和字符串运算:算术运算,JSP领先很多,字符串运算,PHP领先很多,和测试机的结果一致。

连接数据库:PHP与JSP连Mysql速度差距不大,PHP大概快20%左右,奇怪的是我用pconnect连与connect是一样的结果,未测试JSP的连接池。估计JSP用连接池会快很多。

文件操作:PHP的文件操作比JSP性能高出约30%!与测试机的结果有点相差比较大,PHP领先。

II.p4 2.66G,1G DDR,linux服务器

算术运算和字符串运算:和其它环境测试结果一致,JSP在算术运算时领先,PHP在字符串运算时领先很多很多。

连接数据库:执行500次循环,PHP用connect连接,花费185ms,PHP使用pconnect连接,花费70ms;JSP未用连接池,花费2030ms。

文件操作:JSP领先很多,1000次循环,JSP花费1500ms左右,PHP花费7000ms左右。

III.总结

不管什么平台系统,测试结果表明,JSP和PHP在做Web开发时,性能差距不大,只能说各有所长,JSP在数据库操作以及字符串操作方面不如PHP,而PHP在文件操作及算术运算是,不及JSP。

此外,同种语言,在不同的平台表现也不一样,根据我的测试结果表明,Linux下PHP,JSP的性能都要优于Windows的。

七.运行时间的获取

JSP   long timeStart = 0;  long timeEnd = 0;  timeStart = Calendar.getInstance().getTimeInMillis();   //中间代码   timeEnd = Calendar.getInstance().getTimeInMillis();  out.println("开始时间:" + timeStart + "毫秒<br>");  out.println("结束时间:" + timeEnd + "毫秒<br>");  out.println("花费时间:" + (timeEnd - timeStart) + "毫秒<br>");
PHP   $timeStart = 0;  $timeEnd = 0;  $timeStart = mictime();   //中间代码   $timeEnd = mictime();  echo "开始时间:".$timeStart."毫秒<br>";  echo "结束时间:".$timeEnd."毫秒<br>";  echo "花费时间:".($timeEnd - $timeStart)."毫秒<br>";   function mictime() {        //由于PHP支持不支持long型,所以,只取了5位秒数,再加上毫秒。时间段比较,前面的可以忽略        list($usec, $sec) = explode(" ", microtime());        $sec = substr($sec, -5);        $usec = ceil($usec * 1000);        while (strlen($usec) < 3) {              $usec="0".$usec;        }        return $sec.$usec;  }

以上是“PHP与JSP的性能测试比较”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网PHP编程频道!

--结束END--

本文标题: PHP与JSP的性能测试比较

本文链接: https://lsjlt.com/news/289521.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PHP与JSP的性能测试比较
    小编给大家分享一下PHP与JSP的性能测试比较,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!测试环境:◆硬件:P4 2.4G,1G内存◆软件:WindowsXP+...
    99+
    2023-06-17
  • 比较 MongoDB 与 MySQL 以及性能测试
    MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库(另称文档型数据库),是一种NoSQL的数据库。它们各有各的优点,关键是看用在什么地方。所以我们所熟知的那些SQL语句就不适...
    99+
    2023-09-03
    mongodb mysql 数据库
  • PHP 单元测试框架性能比较与选择指南
    php 单元测试框架性能比较表明:phpunit 以 15.5 毫秒的平均执行时间脱颖而出,其次是 mockery(22.3 毫秒)、prophecy(25.4 毫秒)和 codecep...
    99+
    2024-05-06
    php 单元测试框架
  • PHP PHPUnit测试:与其他测试框架的比较
    PHPUnit 是 PHP 中最流行的单元测试框架,但还有其他一些可用的选项。在选择最适合您项目的框架时,考虑以下因素很重要: 功能:框架提供哪些功能? 易用性:框架易于安装和使用吗? 文档:框架是否具有完善的文档? 社区支持:框架是否...
    99+
    2024-04-02
  • PHP 性能优化:基准测试与性能对比
    php 应用程序性能优化至关重要,通过基准测试和性能对比可识别优化领域。基准测试有助于衡量应用程序性能,可用工具包括 apachebench 和 jmeter。性能对比将优化后的应用程序...
    99+
    2024-05-10
    php 性能优化 apache 并发请求
  • Go语言中的基准测试和性能比较
    在 go 语言中,通过使用 testing 包中的 benchmarkxxx 函数,可以轻松编写基准测试来衡量代码性能。这些函数遵循标准语法,并接收 *testing.b 类型的指针作为...
    99+
    2024-05-08
    基准测试 性能比较 go语言
  • PHP 框架基准测试:客观地比较性能和效率
    基准测试显示了不同 php 框架的性能和效率比较,其中:phalon 在 restful api 路由中表现最好。laravel 的路由时间相对较慢。其他测试场景(如数据库查询、模板渲染...
    99+
    2024-05-01
    性能 php laravel git
  • FreeBSD8.0与Ubuntu9.10的性能比较
    本篇内容介绍了“FreeBSD8.0与Ubuntu9.10的性能比较”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Ubuntu 9...
    99+
    2023-06-17
  • Golang 与 Python 的性能比较
    go 在性能上通常优于 python,这归因于其编译性、并发性支持和高效的内存管理。基准测试显示 go 的响应时间更快,而实战案例展示了其在图像处理和科学计算上的优势。 Golang ...
    99+
    2024-05-11
    python golang 标准库
  • Golang性能测试与生产环境的对比
    性能测试与生产环境对比:测试环境和生产环境之间存在硬件、网络、数据和负载等关键差异。测试工具:go benchmarkpprofsiegelocust实战案例:测试显示单个并发用户响应时...
    99+
    2024-05-07
    golang 性能测试
  • Python ORM 性能基准测试:比较不同 ORM 框架
    对象关系映射(ORM)框架在 Python 开发中扮演着至关重要的角色,它们通过在对象和关系数据库之间建立桥梁,简化了数据访问和管理。为了评估不同 ORM 框架的性能,本文将针对以下流行框架进行基准测试: SQLAlchemy Peew...
    99+
    2024-03-15
    ORM
  • c++的glog与spdlog的性能对比测试分析
    目录问题:测试内容:测试环境:glog测试代码如下:spdlog异步测试代码:普通io流写入测试代码:总结:问题: 之前看到有的博文说glog性能很好,效率很高,当时第一反应是&ld...
    99+
    2024-04-02
  • PHP 函数性能基准测试:比较不同实现并提高效率
    答案:基准测试是比较不同函数性能的一种方法,可帮助您选择更有效的实现。详细:设置基准测试:使用 microtime() 函数测量函数执行时间。比较不同实现:测试不同函数实现并记录执行时间...
    99+
    2024-04-12
    php 性能基准测试
  • Percona Server与MySQL 5.5性能的比较
    本篇内容介绍了“Percona Server与MySQL 5.5性能的比较”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,...
    99+
    2024-04-02
  • Java、PHP、Python与MySQL交互的性能测试
    这几天看源码弄清了一件事:WEB服务器接收浏览器请求、将请求传给PHP/Python进程(FCGI等)、与数据库进行交互都是用socket(套接字)。 也就是说,这些行为都是进程间通信。一台WEB...
    99+
    2024-04-02
  • PHP Session 跨域的性能测试与调优
    引言:在使用PHP开发网站时,我们经常会用到Session来存储用户的信息和状态。然而,当网站存在跨域请求时,会给Session的性能带来一定的挑战。本文将介绍PHP Session跨域的性能测试与调优,并给出具体的代码示例。一、Sessi...
    99+
    2023-10-21
    调优 性能测试 跨域
  • PHP与数据库性能测试的集成
    随着互联网技术的不断发展,数据库已成为互联网应用中的重要组成部分,而数据库的性能则直接影响着应用的稳定性和用户体验。而对于PHP作为一种常用的Web开发语言来说,其与数据库的集成也至关重要。在实际应用中,我们经常需要对数据库进行性能测试,以...
    99+
    2023-05-15
    数据库 PHP 性能测试
  • PHP 数组值与键互换:实现与性能比较
    在 php 中,可通过以下方法互换数组键和值:array_flip() 函数:语法简单,直接实现键值互换,时间复杂度 o(n)。自定义函数:灵活,可根据需要定制,但时间复杂度也为 o(n...
    99+
    2024-05-04
    php 数组
  • MongoDB性能测试与Python测试代码
    最近参与公司一个项目,计划对在线平台的大规模查询做到快速响应,预估数据总量大概在2-3亿条,数据库并发量大概每秒1500,一年后并发大概3000每秒,经过在Redis和mongodb之间艰难的选择之后,决定...
    99+
    2024-04-02
  • PHP数组反转性能比较
    在 php 中,反转数组的方法性能从快到慢依次为:array_reverse() 函数、手动反转使用 for 循环、手动反转使用 while 循环。在测试数组大小为 10,00...
    99+
    2024-04-28
    php 数组
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作