千家信息网

PHP与JSP的性能测试比较

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下PHP与JSP的性能测试比较,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!测试环境:◆硬件:P4 2.4
千家信息网最后更新 2026年11月01日PHP与JSP的性能测试比较

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

测试环境:

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

◆软件:WindowsXP+Apache2.0.54+PHP4.4.0+Mysql4.1.14+Tomcat5.0.28

一.算术运算

a.测试标准

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

b.测试代码

测试结果(单位:毫秒)

测试结果说明: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.测试

测试结果(单位:毫秒)

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++;  }

测试结果(单位:毫秒)

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++;  }

测试结果(单位:毫秒)

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 + "毫秒
"); out.println("结束时间:" + timeEnd + "毫秒
"); out.println("花费时间:" + (timeEnd - timeStart) + "毫秒
");
PHP   $timeStart = 0;  $timeEnd = 0;  $timeStart = mictime();   //中间代码   $timeEnd = mictime();  echo "开始时间:".$timeStart."毫秒
"; echo "结束时间:".$timeEnd."毫秒
"; echo "花费时间:".($timeEnd - $timeStart)."毫秒
"; 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的性能测试比较"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

测试 运算 结果 数据 循环 时间 算术 数据库 字符 字符串 性能 文件 程序 系统 过程 代码 数值 领先 配置 很大 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 保险科技 互联网保险 互联网电商科技 鑫亿盛互联网科技 新浪科技互联网 中国的互联网科技企业的崛起 阿大互联网科技有限公司 互联网5g黑科技有哪些 新兴科技互联网创新大赛颁奖典礼 佛山市翊博互联网络科技有限公司 群盈汇互联网科技有限公司 工业互联网展湾科技股份有限公司 怎样加入科技互联网 杭州披云加互联网科技有限公司 从那以后互联网科技有限公司 互联网科技包装股 互联网公司属于科技吗 云南互联网科技学费 美国五大互联网科技公司市值多少 平安好医生打造互联网科技医疗 广州全民伙伴互联网科技有限公司 咖啡网 百单网互联网科技有限公司 中关村互联网科技集团 互联网科技官网 科技企业和互联网企业 福建科技产业互联网发展 互联网公司黑科技创始人 互联网科技创新的路径 神州科技互联网有限公司 互联网科技创新方面的资料
0