很早就相對php和c進行乙個親測的對比了,無奈當時對於zend api不了解,現在本文就是親自來測試一下c與php的差距。
我想不好拿什麼來測試,於是題目就是對乙個大小為3000的陣列進行氣泡排序,看時間。
一共分為3種情況
c實現php實現
php的c拓展,由php產生陣列,然後交給c處理資料
1.c實現
#include #include #include "time.h"3.php的c拓展,由php產生陣列,然後交給c處理資料int main(int arg,char **argv)}}
/* for(i=0;i2.php
<?php
$start_time =microtime(true);
$data =array();
for($i=0; $i<3000; $i++)
// var_dump($data);
$temp;
for($i=0;$i$data[$j+1])}}
// var_dump($data);
$end_time =microtime(true);
$time = $end_time-$start_time;
echo "use time:" ,$time;
php_function(bubble)int i;
int count;
count = zend_hash_num_elements(z_arrval_p(array));
int j,temp;
int data[count];
zend_hash_internal_pointer_reset(z_arrval_p(array));
for(i=0;idata[j+1])}}
for(i=0;i然後在php裡呼叫
<?php
$start_time =microtime(true);
$data =array();
for($i=0; $i<3000; $i++)
echo bubble($data);
$end_time =microtime(true);
$time = $end_time-$start_time;
echo "use time:" ,$time;
經過對此測試
#c與php速度的差別
測試手段對乙個大小3000的陣列進行排序
1.cuse time: 0.090000-0.110000
2.php
use time:11.867825984955
3.php拓展(c)
use time:0.12569403648376
我們可以清楚地看到c比php在這個情況下快上100+多倍,php的拓展把模組轉為c來處理,也同樣可以減小差距。
這中間的差距,一方面肯定是php與c不同的弱型別變數(php的變數在核心裡是用zval表示的,裡面抽象了7種變數,long,float,obj,array等),還有誇張的函式封裝(目測這個很吃效能),導致速度上不去了。
不過這個例子可能沒啥代表性,不過我們同樣可以了解個大概了。
由此我們可以知道為什麼php這麼多函式都是用c寫的了,php基本上大部分的外接函式都是採用c來寫的,pear和pecl由此應運而生,難怪乙個不會寫c的php程式設計師不是真的好程式設計師。
中國php界的大牛laruence的yaf 就是用c寫的,傳說中速度最快的php的web框架。有機會的真的想研讀一下原始碼。
ASP和PHP檔案操作速度的對比
最近乙個專案中,有乙個讀取某個資料夾下所有檔案的功能。使用了thinkphp layui,本地測試沒有問題,到客戶 發現速度奇慢,需要10秒以上才能讀取完畢。經溝通發現乙個資料夾有1000 個檔案,客戶之前有一套asp的老系統,1000多個 檔案也能實現秒開。一時竟然沒有頭緒,難道 php 不如 a...
執行速度對比
2018 04 12 pyspark master spark node1 7077 num executors 100 executor memory 6g executor cores 5 driver memory 1g conf spark.default.parallelism 1000 ...
uboot下nfs與tftp傳輸速度對比
一 前言 uboot是支援檔案傳輸的,無論是電腦上的檔案傳到開發板,還是開發板的檔案傳到電腦,都是可以實現的,傳輸協議有nfs和tftp,兩者在傳輸速度上是有區別的,下面來介紹一下僅用uboot傳檔案的速度對比。二 開發環境 開發板 imx6ull,512m的ddr,從tf卡載入uboot,電腦 u...