這個擴展早就寫好了,只是一直沒有時間寫在blog上面,今天抽點時間,將它記錄下來,以後備用。
我們使用php擴展,主要目的是提高程序的執行效率,對於訪問量很大的代碼或者邏輯將其寫成擴展。在做項目的過程中,需要對數據進行排序,數據運算比較復雜;我們准備對一百萬個數據進行排序, 下面是我在程序之前做的一個測試:首先使用php程序生成一百萬的隨機數,並將其保存在文件中。
生成隨即數的代碼如下面所示:
set_time_limit(0);
ini_set("memory_limit", -1);
$data = array();
for($i = 1; $i < 1000000; $i++)
$data[] = rand();
file_put_contents('data.php', '<?PHP $data = ' . var_export($data, true) . "; ?>");
代碼很簡單,一看就明白,這裡不作說明。
下面是使用php寫的快速排序,PHP自身帶的排序函數,以及自己擴展的排序函數,它們所需時間如下所示:
下面將PHP代碼展示一下,需要說明的是:hello函數時自己寫的擴展
<?PHP
ini_set("memory_limit", -1);
set_time_limit(0);
include_once('data.PHP'); //剛才產生的隨機數保存在這個文件
$len = count($data);
$data_s = $data_q = $data;
$s_s = $s_t = array_sum(explode(" ", microtime()));
qsort($data, 0, $len-1);
$s_t = array_sum(explode(" ", microtime()));
sort($data_s);
$q_t = array_sum(explode(" ", microtime()));
$data_q = hello($data_q);
$r_t = array_sum(explode(" ", microtime()));
echo "PHP寫的快速排序