網頁

2014年3月27日 星期四

Dashboard 程式的執行時間

在撰寫 dashboard 時。不知什麼原因,後端資料的產出有時結果出現的很快,有時出現的很慢。加入以下 timer 這段程式可以大概推敲出那一段程式卡住了。
  • 後端在做分析 20 多萬筆的資料,理論上在資料庫應不會反應這麼慢,應該是在於程式的寫法上。
  • 後來查找資料才明白,原來 MySQL 有自動快取( query cache )的功用,這也是 MySQL執行會這麼快的原因之一,當接收到一個相同的 SQL Query 時,會直接由先前已分析過的快取直接引用結果,所以才會出現覺得有時快有時慢的錯覺。
  • 程式加快的方式應該可以考慮以下兩種做法:
  • 後來重新將程式修改過,改成先刪除不需要的資料,將要分析的資料單獨另外寫到一個獨立的資料表內,再去做分析。分析的時間由原本的 10+ sec 變為 <0.2 sec,真的還差真多。
//PHP Timer code
//程式起始時間
$time_start = getmicrotime();
…...
//放要測試的執行程式
…...
$time_sql = getmicrotime();
$time = $time_sql - $time_start;
echo "執行SQL條件的執行時間 : $time seconds"; //輸出總運行時間

function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
//PHP Timer code EOF 

相關資料:



沒有留言:

張貼留言