php快速得到大數組里的隨機小數組
有個猜用戶喜歡的功能,用戶可以通過點擊換一組,來刷新推薦的內容。
先通過數據庫查詢,得到前1000條數據,然后隨機去除4條。
程序寫完之后,發現運行的很慢,每次刷新,都要等很久才出來。
代碼如下:
$arr = range(1, 100000); $start = time(); for($i = 0; $i < 100; $i ++){ $key = mt_rand(0, 99999 - $i); $result[] = $arr[$key]; unset($arr[$key]); sort($arr); } $end = time(); echo $end - $start;
上面的寫法,用unset之后,必須進行排序。
unset只會刪除鍵值,而key會保留。
經過改進之后的寫法如下:
$arr = range(1, 100000); $start = time(); for($i = 0; $i < 100; $i ++){ $key = mt_rand(0, 99999 - $i); $result[] = array_splice($arr, $key, 1); } $end = time(); echo $end - $start;
效率提高了3-4倍。
本文由用戶 e2ex 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!