真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PHP與JSP的性能測試比較

小編給大家分享一下PHP與JSP的性能測試比較,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創(chuàng)新互聯(lián)專注于堆龍德慶企業(yè)網(wǎng)站建設,成都響應式網(wǎng)站建設公司,商城網(wǎng)站建設。堆龍德慶網(wǎng)站建設公司,為堆龍德慶等地區(qū)提供建站服務。全流程按需開發(fā),專業(yè)設計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務

測試環(huán)境:

◆硬件:P4 2.4G,1G內(nèi)存

◆軟件:WindowsXP+Apache2.0.54+PHP4.4.0+MySQL4.1.14+Tomcat5.0.28

一.算術運算

a.測試標準

循環(huán)N次,并做整型自加運算。

b.測試代碼

PHP與JSP的性能測試比較

測試結果(單位:毫秒)

PHP與JSP的性能測試比較

測試結果說明:m-n表示主要波動范圍介于m和n之間;n表示出現(xiàn)次數(shù)非常之多的數(shù)值或平均值,m(x,y)表示偶爾會出現(xiàn)x,y。以下相同。

c.結論

Java的算術運算,優(yōu)化得很好,估計是直接的對應CPU的指令,數(shù)值再大,算術運算性能都很平穩(wěn)。需要注意的是,long的運算時間要比int的運算時間要長一些(畢竟是32位的系統(tǒng)),所以,在無需用到long時,盡量不要用long,而用int.

PHP是弱類型的變量,算術運算很不盡人意,估計不是直接對應機器碼的算術運算。PHP算術運算的過程猜測如下,在運算前需要檢測變量是否是數(shù)值,并要將非數(shù)值轉換成數(shù)值,比如,PHP可以做這樣的運算:100+"zhoutang",結果等于100.正是因為是弱類型語言,加上運算前的檢測和轉換,所以才導致算術運算的性能低下。PHP的單次運算時間比較穩(wěn)定,大概每10000次算術加運算花費的時間約為3.5ms

不同的運算方法,也對性能有影響。

二.字符串運算

a.測試標準

字符串連接運算對比。

b.測試

PHP與JSP的性能測試比較

測試結果(單位:毫秒)

PHP與JSP的性能測試比較

c.結論

Java的字符串是用對象處理,很明顯,在字符串的比較過程中,Java比PHP差很遠。(因為字符串操作,很大部分要做連接,這里只比較連接運算,另外粗略比較了一下substring,兩者的差別不是很大)

PHP的字符串運算,估計很多是直接調(diào)用C的字符串函數(shù),所以效率會高很多。在做Web開發(fā)中,字符串的連接操作還是很頻繁的(包括很多時候生成SQL字符串),所以,在算術運算和字符串運算兩個方面,Java(JSP)優(yōu)勢不明顯,與PHP各有所長。

三.數(shù)據(jù)庫查詢

a.測試標準

循環(huán)N次做數(shù)據(jù)庫打開,查詢,關閉操作。主要對JSP直接連數(shù)據(jù)庫,JSP連接池連數(shù)據(jù)訓,PHP直接連數(shù)據(jù)庫,PHP持久連數(shù)據(jù)庫做比較。

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連數(shù)據(jù)庫的,因為沒連接池可用,特意在網(wǎng)上找了一些資料,沒發(fā)現(xiàn)PHP可用的連接池,相關提法都很少,很多PHP程序員甚至沒聽過這概念,這樣的結果,確實讓我也大吃一驚。不過,話說回來,pconnect的原理,和連接池差不多的,都是程序關閉連接,但PHP并不真正關閉,再次打開時,直接使用可用的連接。但是,PHP的實現(xiàn)確實比Java方便多了,只需加個字母,就輕易實現(xiàn),Java則麻煩一些,我配置Tomcat的連接池都費了些時間,按官方文檔,在tomcat5.0.28下沒配置成功,在CSDN上面,也看到很多新手發(fā)出求救,很多配置不成功的,***自己摸索出來了,配置方法可參考我的Blog。

如果將連接數(shù)據(jù)庫和關閉數(shù)據(jù)庫的操作,移到循環(huán)外面,剛PHP和JSP的執(zhí)行時間都差不多,循環(huán)50次約16ms??梢姡瑪?shù)據(jù)庫操作中,打開連接是相當耗資源的,其它操作,與語言差別不大。JSP在連接數(shù)據(jù)庫的時候,開銷比PHP大很多。(這里特意將打開數(shù)據(jù)庫操作放在循環(huán)體做比較)

四.文件操作

在Web開發(fā)過程上,文件操作一般不可缺少,大多數(shù)Web系統(tǒng)都會上傳或對文件操作。

a.測試標準

綜合測試各種文件操作,測試的過程是首先判斷某文件是否存在,存在的話刪除文件,再新建文件,再往文件里寫一定長度的內(nèi)容。整個過程循環(huán)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***,循環(huán)次數(shù)大的時候,PHP比JSP慢一倍。有點不可思議。

五.總結

總體來說,PHP與JSP在性能上,差別不了很遠,各有優(yōu)勢。JSP雖是編譯執(zhí)行,但卻要通過JVM,性能會有所下降。從功能上說,JSP的相對強大一些,主要是因為有Java的支撐,在一些很大型的企業(yè)中,用JSP有優(yōu)勢(主要是有Java支撐),但一般的企業(yè)或一般的應用,PHP完全可以應付。另外,PHP比JSP更容易上手。另外,個人說為,做同樣的WEB系統(tǒng),PHP相對JSP來說,復雜度可能會低一些(JSP所有的技術都用上的話,估計架構環(huán)境,系統(tǒng)設計都夠麻煩的,而且,Java體系各種技術和產(chǎn)品比較開放和松散,文檔相對來說有點雜亂,至少我認為Tomcat的文檔做得沒有Apache,PHP的好。)。

PHP小巧而靈活,JSP就顯得寵大,而且,概念眾多,個人認為Java體系有故意夸大技術復雜度的嫌疑。

此外,PHP還有Zend可用,本來想裝上Zend再來測試一番的,這幾天Zend的網(wǎng)站老是上不去。據(jù)有關測試表明,Zend能提升PHP的性能大約100%左右。也有說30-40%的,也有說600%的。估計是算術運算能提升個檔次,其它操作,最多提升30-40%左右。

在整個測試過程中,每個取值我都會測多次,一般10s以下的運算,我至少測10次,10s以上的運算,至少測3次。PHP的測試結果都比較穩(wěn)定,每次測出的結果差別不是很大,從統(tǒng)計學的角度來說,方差比較小。JSP相對來說,偶爾會出現(xiàn)一些值,偏離平均值比較遠,而且,由于需要編譯的原因,***執(zhí)行一般時間比較長(雖然從程序里顯示的數(shù)值看不出***執(zhí)行的時間差距,但在程序開始執(zhí)行前,編譯需要點時間。編譯后才開始執(zhí)行,所以程序顯示的結果看不出來。),所以,JSP的測試,沒取***運行的結果。

另外,在測試連接數(shù)據(jù)庫的過程中,由于一時疏忽,忘了在循環(huán)體內(nèi)i++,導致出現(xiàn)死循環(huán)。所以,也特意做了幾個死循環(huán)測試。算術運算測試,JSP死循環(huán)時,瀏覽器點了停止按鈕,tomcat仍繼續(xù)執(zhí)行,CPU一直是100%,只有在任務管理器里停了tomcat,才得以停止死循環(huán);PHP算術運算死循環(huán),由于php.ini里有設置程序執(zhí)行的最長時間和***內(nèi)存,所以,死循環(huán)能夠自動結束。數(shù)據(jù)庫連接死循環(huán),JSP在循環(huán)大概900多次后,出現(xiàn)異常,報錯,提示無法連接;PHP循環(huán)1500次后,仍然沒有結束,只好在任務管理器里結束apache進程(我的php.ini設置PHP最長執(zhí)行時間為300秒)。

六.其它環(huán)境簡單測試

以上數(shù)據(jù)只能做為參考,同樣的程序,在其它配置的系統(tǒng),我也做了簡單的測試:

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

(安裝東西比較多,比較亂,運行一年多沒重裝,由于是工作機,所以操作系統(tǒng)對應用程序優(yōu)化,而不是對后端服務優(yōu)化;所測得的數(shù)據(jù),比XP下測得的數(shù)據(jù)要大很多,比如PHP連接Mysql循環(huán)500次,大約需要16000ms。),粗略的測試的結果是:

算術運算和字符串運算:算術運算,JSP領先很多,字符串運算,PHP領先很多,和測試機的結果一致。

連接數(shù)據(jù)庫:PHP與JSP連Mysql速度差距不大,PHP大概快20%左右,奇怪的是我用pconnect連與connect是一樣的結果,未測試JSP的連接池。估計JSP用連接池會快很多。

文件操作:PHP的文件操作比JSP性能高出約30%!與測試機的結果有點相差比較大,PHP領先。

II.p4 2.66G,1G DDR,Linux

以上是“PHP與JSP的性能測試比較”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


分享文章:PHP與JSP的性能測試比較
本文路徑:
http://weahome.cn/article/gseeij.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部