本測試數據真實,但只做為參考。歡迎大家討論。
除做比較外,也可供PHP,JSP程序員參考,以便優化自己的程序。
一.算術運算
a.測試標准
循環N次,並做整型自加運算。
b.測試
測試代碼:
測試類型
JSP int整型
JSP long整型
JSP long整型2
PHP
PHP2
測試代碼
int i=0;
while (i<XXXX)
{
i++;
}long l=0;
while (l<XXXX)
{
l++;
}long l=0;
while (l<XXXX)
{
l=l+1;
}$i=0;
while ($i<XXXX)
{
$i++;
}$i=0;
while ($i<XXXX)
{
$i=$i+1;
}
測試結果(單位:毫秒)
測試結果說明:m-n表示主要波動范圍介於m和n之間;n表示出現次數非常之多的數值或平均值,m (x,y)表示偶爾會出現x,y。以下相同。
XXXX取值 JSP int整型 JSPlong整型 JSPlong整型2 PHP PHP2 1000 0 0 0 0-1 0-1 10000 0 0 0 3-4 6-7 100000 0 0 0(16,32) 34-35 51-52 1000000 0(10) 0(16,32) 0(16,32) 348-368 527-534 10000000 0(13) 16-32 32-78 3547-3585 5239-5390 100000000 0(16) 266-281 265-281 35309-35486 1000000000 0(16,743) 2625-2676 2203-3687
c.結論
Java的算術運算,優化得很好,估計是直接的對應CPU的指令,數值再大,算術運算性能都很平穩。
需要注意的是,long的運算時間要比int的運算時間要長一些(畢竟是32位的系統),所以,在無需用 到long時,盡量不要用long,而用int.
PHP是弱類型的變量,算術運算很不盡人意,估計不是直接對應機器碼的算術運算。
PHP算術運算的過程猜測如下,在運算前需要檢測變量是否是數值,並要將非數值轉換成數值,比如 ,PHP可以做這樣的運算:100+"zhoutang",結果等於100.正是因為是弱類型語言,加上運算 前的檢測和轉換,所以才導致算術運算的性能低下。
PHP的單次運算時間比較穩定,大概每10000次算術加運算花費的時間約為3.5ms
不同的運算方法,也對性能有影響。
二.字符串運算
a.測試標准
字符串連接運算對比。
b.測試
測試代碼:
測試類型
JSP
PHP
測試代碼
String str="";
while (str.length()< XXXX)
{
str+="a";
}$str="";
while (strlen($str)< XXXX)
{
$str.="a";
}
測試結果(單位:毫秒)
XXXX取值 JSP PHP 1000 0-16 1 10000 656-703 9-10 100000 105078-105235 95-103
c.結論
Java的字符串是用對象處理,很明顯,在字符串的比較過程中,Java比PHP差很遠。(因為字符串操作 ,很大部分要做連接,這裡只比較連接運算,另外粗略比較了一下substring,兩者的差別不是很大)
PHP的字符串運算,估計很多是直接調用C的字符串函數,所以效率會高很多。
在做WEB開發中,字符串的連接操作還是很頻繁的(包括很多時候生成SQL字符串),所以,在算術運算 和字符串運算兩個方面,Java(JSP)優勢不明顯,與PHP各有所長。