C與PHP速度對比

2021-06-16 10:32:26 字數 1839 閱讀 8856

很早就相對php和c進行乙個親測的對比了,無奈當時對於zend api不了解,現在本文就是親自來測試一下c與php的差距。

我想不好拿什麼來測試,於是題目就是對乙個大小為3000的陣列進行氣泡排序,看時間。

一共分為3種情況

c實現php實現

php的c拓展,由php產生陣列,然後交給c處理資料

1.c實現

#include #include #include "time.h"

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;

3.php的c拓展,由php產生陣列,然後交給c處理資料

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...