PHP头条
热点:

四.文件操作

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

a.测试标准

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

b.测试结果

  1. JSP测试代码:  
  2.  
  3. String fileName = "jsp.txt";  
  4. String filePath = request.getRealPath("");   
  5. int i = 0;  
  6. int j = 0;  
  7. while (i < XXXX) {  
  8.       File f = new File(filePath,fileName);   
  9.       if (f.exists()) {   
  10.             f.delete();  
  11.       }  
  12.       f.createNewFile();  
  13.       FileWriter fw = new FileWriter(filePath + File.separator + fileName);  
  14.       j = 0;  
  15.       while (j < 2 * i) {  
  16.             fw.write(j + "\r\n");  
  17.             j++;  
  18.       }  
  19.       fw.close();  
  20.       i++;  
  1. PHP测试代码:  
  2.  
  3. $fileName = "./php.txt";   
  4. $i = 0;  
  5. while ($i < XXXX) {  
  6.       if (file_exists($fileName)) {  
  7.             unlink($fileName);  
  8.       }  
  9.       $handle = fopen($fileName, "x");  
  10.       $j = 0;  
  11.       while ($j < 2 * $i) {  
  12.             fwrite($handle,$j."\r\n");  
  13.             $j++;  
  14.       }  
  15.       fclose($handle);  
  16.       $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的。

七.运行时间的获取

  1. JSP  
  2.  
  3. long timeStart = 0;  
  4. long timeEnd = 0;  
  5. timeStart = Calendar.getInstance().getTimeInMillis();  
  6.  
  7. //中间代码  
  8.  
  9. timeEnd = Calendar.getInstance().getTimeInMillis();  
  10. out.println("开始时间:" + timeStart + "毫秒<br>");  
  11. out.println("结束时间:" + timeEnd + "毫秒<br>");  
  12. out.println("花费时间:" + (timeEnd - timeStart) + "毫秒<br>"); 

  1. PHP  
  2.  
  3. $timeStart = 0;  
  4. $timeEnd = 0;  
  5. $timeStart = mictime();  
  6.  
  7. //中间代码  
  8.  
  9. $timeEnd = mictime();  
  10. echo "开始时间:".$timeStart."毫秒<br>";  
  11. echo "结束时间:".$timeEnd."毫秒<br>";  
  12. echo "花费时间:".($timeEnd - $timeStart)."毫秒<br>";  
  13.  
  14. function mictime() {  
  15.       //由于PHP支持不支持long型,所以,只取了5位秒数,再加上毫秒。时间段比较,前面的可以忽略  
  16.       list($usec, $sec) = explode(" ", microtime());  
  17.       $sec = substr($sec, -5);  
  18.       $usec = ceil($usec * 1000);  
  19.       while (strlen($usec) < 3) {  
  20.             $usec="0".$usec;  
  21.       }  
  22.       return $sec.$usec;  

原文链接:http://www.360doc.com/content/10/0514/20/2807_27615633.shtml


www.phpzy.comtrue/php/10351.htmlTechArticle四.文件操作 在Web开发过程上,文件操作一般不可缺少,大多数Web系统都会上传或对文件操作。 a.测试标准 综合测试各种文件操作,测试的过程是首先判断...

相关文章

相关频道:

PHP之友评论

今天推荐