我有一個PHP腳本的集合,這些腳本的CPU密集程度非常高,可以同時處理數百個用戶的數百萬計算。什麼是循環/賦值與C相比變慢?
我試圖找到一種方法來加快PHP變量賦值的內部和循環序列VS C.
雖然PHP顯然是鬆散類型,有什麼辦法/擴展到專門指定類型(轉讓,不是演員,這似乎更昂貴)在C風格的時尚?
這是我的意思。
這是用C一些僞代碼:
#include <stdio.h>
int main() {
unsigned long add=0;
for(unsigned long x=0;x<100000000;x++) {
add = x*59328409238;
}
printf("x is %ld\n",add);
}
不言自明 - 它通過的59十億的任意數量的循環了100萬次,倍數每次迭代中,分配給它到一個變量並打印出來。
我的MacBook,它編譯並運行它產生:
lees-macbook-pro:Desktop lee$ time ./test2
x is 5932840864471590762
real 0m0.266s
user 0m0.253s
sys 0m0.002s
相當不錯的快!
在PHP 5.3 CLI類似的腳本...
<?php
for($i=0;$i<100000000;$i++){
$a=$i*59328409238;
}
echo $a."\n";
?>
...製作:
lees-macbook-pro:Desktop lee$ time /Applications/XAMPP/xamppfiles/bin/php test3.php
5.93284086447E+18
real 0m22.837s
user 0m22.110s
sys 0m0.078s
在22秒VS 0.2!我知道PHP在幕後比這個簡單的C程序做得更多 - 但是有什麼辦法可以讓PHP內部在原始類型和循環上更加「原生」嗎?
可能是你必須優化你的算法一點?例如,從數百萬計算到數十萬計算? – 2010-03-22 07:02:56
我沒有完全解釋算法/需求,主要是因爲它對主題有點矯枉過正,但實際上在成千上萬的用戶中有超過100,000+的同時計算......我編寫了上面的代碼來模擬100,000,000個連續的循環用任意數字乘以簡化示例,並且證明我對速度差異的觀點,並不意味着我沒有考慮過減少計算......儘管我同意這通常是非常好的編碼建議適用於任何項目。 – 2010-03-22 08:37:23