Python vs PHP 冒泡排序和累加求和計算效能測試

來源:互聯網
上載者:User

標籤:

測試環境: 處理器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

Python vs PHP 冒泡排序和累加求和計算效能測試

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.