2009年3月14日 星期六

效能快1.5倍的寫檔計數器

現行的計數器,很多都是以讀寫檔案來實作這項功能(file -based)。 因為讀寫檔的機制較單純,遠比讀寫資料庫來得快速且有效率。 但有的時候確未必,如果檔案是以NFS或是其它fs系列的來存放,在量大的時候常常會撐不住。 使用資料庫的效能反而比較高。 所以如果要以檔案來實作程式的話,強列建議要使用本機。

這次的修改是工作中的一個小專案,要寫到計數器。 計數器上網可以找到一堆。有三行的版本,也有五行的版本。 不過我嫌它不夠快。 於是稍事修改。 來... 看程式...

這是一般的計數器...  (因為要測效能,所以就先不echo)

--

 

--

這算是有不錯的效能的。

因為file_get_contents是平均起來效能最好的。

這是我這邊修改的版本

--

--

主要應用的概念是... 檔案用append遠比直接寫入來得快。

我用counter.tmp來的「檔案大小」來做暫存。

當然,還要定期把counter.tmp的filesize定期計加到counter.txt裡面

你可以用crontab,或者是...

--

if(rand(0,10000)==1){
        //把counter.tmp的filesize加到counter.txt裡面
}

--