由於最近在寫讀取資料庫時,一直在想用先用DB_num_rows取出值然後再用FOR去跑比較快,還是用WHILE去跑比較快,因此寫了一個小程式去跑看看
程式碼如下
function caclutime(){//時間計算FUNCTION $time = explode( " ", microtime()); $usec = (double)$time[0]; $sec = (double)$time[1]; return $sec + $usec; } $sql = "SELECT birth FROM `char_data` where id = '$this->id' ORDER BY job "; $l_sql = DB_mysql_query($sql); //時間測試-FOR $begin_time=caclutime(); $l_num = DB_num_rows($l_sql); $t=0; for($i=0;$i<$l_num;++$i){ $l_Var = DB_mysql_fetch_array($l_sql,MYSQL_ASSOC); $no = $l_Var["birth"]; $this->char[$no] = new char($no); $this->char[$no]->SetUser($this->id); $t++; } $end_time=caclutime(); $total=$end_time-$begin_time; echo "$total 秒 for 執行 $t 次:<br />";//顯示結果 $begin_time=caclutime(); $l_sql2 = DB_mysql_query($sql); //時間測試-while $t=0; while($l_Var = DB_mysql_fetch_array($l_sql2,MYSQL_ASSOC)){ $no = $l_Var["birth"]; $this->char[$no] = new char($no); $this->char[$no]->SetUser($this->id); $t++; } $end_time=caclutime(); $total=$end_time-$begin_time; echo "$total 秒 while 執行 $t 次:";//顯示結果 |
在同時執行18次之下,連跑10次取平均值
平均0.0686039924622 秒 for 執行 18 次:
平均0.0263319015503 秒 while 執行 18 次:
在同時執行2次之下,連跑10次取平均值
0.00348091125488 秒 for 執行 2 次:
0.00146985054016 秒 while 執行 2 次:
回應
RSS 書籤訂閱回應內容