Python vs PHP 冒泡排序和累加求和计算性能测试
测试环境: 处理器i5-3230M,64位Ubuntu 14.04
Python 2.7.6, PHP 5.4.39, PHP 7.0.0-dev(2015/04/21)
测试内容:
冒泡排序:对10个升序的数进行排序,降序输出,循环1百万次.
累加求和:0+1+2+3+...+99999999
冒泡排序测试结果对比:
程序: Python PHP5 PHP7
耗时: 16.910s 14.715s 8.011s
内存: 35.8m 9.0m 12.5m
Python改用xrange后,内存占用为4.8MB,耗时为16.784s.
累加求和测试结果对比:
程序: Python PHP5 PHP7
耗时: 10.057s 3.855s 1.855s
内存: 3.039g 8.9m 12.5m
使用range时,Python内存占用达到3GB,改为xrange后,内存占用为4.8MB,耗时为9.460s.
结论:
Python和PHP都是动态脚本语言,都没有JIT机制,所以测试是公平的.
Python计算性能根本比不上PHP5,跟PHP7差距更大,所以就别黑PHP计算不如Python了.
PHP是 自己编译的 ,启用了很多内建的功能,所以测试中内存占用会比Python多一些.
下面是详细测试过程:
Python冒泡排序:
def bubble_sort(lst):
length = len(lst)
for i in range(0, length, 1):
for j in range(0, length-1, 1):
if lst[j] < lst[j+1]:
temp = lst[j]
lst[j] = lst[j+1]
lst[j+1] = temp
return lst
for c in range(1000000):
lst = [0,1,2,3,4,5,6,7,8,9]
lst = bubble_sort(lst)
print(lst)
测试: time python BubbleSort.py
耗时: 0m16.910s
内存: 35.8m
Python累加求和:
sum = 0
for i in range(100000000):
sum += i
print(sum)
测试: time python sum.py
耗时: 0m10.057s
内存: 3.039g
PHP冒泡排序:
<?php
function bubble_sort($array) {
$size = count($array);
for ($i=0;$i<$size;$i++) {
for ($j=0;$j<$size-1;$j++) {
if ($array[$j] < $array[$j+1]) {
$temp = $array[$j];
$array[$j] = $array[$j+1];
$array[$j+1] = $temp;
}
}
}
return $array;
}
for ($c=0;$c<1000000;$c++) {
$array = array(0,1,2,3,4,5,6,7,8,9);
$array = bubble_sort($array);
}
print_r($array);
测试: time php BubbleSort.php
耗时: 0m14.715s
内存: 9.0m
测试: time phpng BubbleSort.php
耗时: 0m8.011s
内存: 12.5m
PHP累加求和:
<?php
$sum = 0;
for($i=0;$i<100000000;$i++)
$sum += $i;
print_r($sum);
测试: time php sum.php
耗时: 0m3.855s
内存: 8.9m
测试: time phpng sum.php
耗时: 0m1.855s
内存: 12.5m
更正:
虽然文中的算法也能排序,但做了一些无用功.
文中的冒泡排序算法不正确,第二层循环应该是 for ($j=0;$j< $size-1-$i;$j++) .
function bubble_sort($array) {
$size = count($array);
for ($i=0;$i<$size;$i++) {
for ($j=0;$j<$size-1-$i;$j++) {
if ($array[$j] < $array[$j+1]) {
$temp = $array[$j];
$array[$j] = $array[$j+1];
$array[$j+1] = $temp;
}
}
}
return $array;
}
冒泡排序参考:
http://en.wikibooks.org/wiki/Algorithm_Implementation/Sorting/Bubble_sort#PHP