細細品味PHP程式的演算法

2021-05-08 12:11:35 字數 1168 閱讀 1988

在一般的應用中,php的程式設計師會比較少的注意到php程式的細微演算法對效能影響的問題,但在處理一些比較占用資源的東西的時候,適當調整演算法,會讓程式的效能整倍的提高。

這幾天,我在研究分詞的演算法,如果不預先載入詞典的話,那種運算速度簡直慘不忍睹,因此我考慮了預先載入詞典在乙個陣列中的做法,我手上有乙個十多萬詞彙的詞典,開始的時候,用這樣的方式載入:

$fp = fopen(dirname(__file__)."/mydic.txt","r");

while($wd = fgets($fp,1024))

fclose($fp);

這樣一測試,發現分析時候慢吞吞的,後來通過檢測執行時間才發現,原來載入詞典居然用了 1.5 秒多,也難怪!

資料格式為:

0列:前兩詞的拼音,1列為:詞,2列為:詞的長度

如:al`奧林匹克運動會`14

al`阿拉伯的勞倫斯`14

as`衣索匹亞高原`14

wp`旺鋪租售`8  

wq`網球王子`8  

wq`外企服務`8

我試一下不作任運作算,唯讀一遍資料檔案:

$fp = fopen(dirname(__file__)."/mydic.txt","r");

while($wd = fgets($fp,24))

fclose($fp);

經測試只用了:0.18 秒,顯然真正占用時間的**是:

$ws = split("`",trim($wd));

$m_dic[$ws[0]][$ws[1]] = $ws[2];

這兩行**,我把它換成這個樣子:

$fp = fopen(dirname(__file__)."/mydic.txt","r");

while($wd = fgets($fp,24))

fclose($fp);

這樣測試就只有 0.7 秒多,然後把詞典中詞的長度去除,變為:

$fp = fopen(dirname(__file__)."/mydic.txt","r");

while($wd = fgets($fp,18))

fclose($fp);

又快了 0.07 秒左右,速度在 0.63 秒中徘徊,這和原來的 1.5 是多大的差別呀!

細細品味PHP程式的演算法

2008 06 08 18 23 在一般的應用中,php的程式設計師會比較少的注意到php程式的細微演算法對效能影響的問題,但在處理一些比較占用資源的東西的時候,適當調整演算法,會讓程式的效能整倍的提高。這幾天,我在研究分詞的演算法,如果不預先載入詞典的話,那種運算速度簡直慘不忍睹,因此我考慮了預先...

細細品味C Socket程式設計專題

什麼是socket?所謂socket通常也稱作 套接字 應用程式通常通過 套接字 向網路發出請求或者應答網路請求。socket用於在兩個基於tcp ip協議的應用程式之間相互通訊。最早出現在unix系統中,是unix系統主要的資訊傳遞方式。在windows系統中,socket稱為winsock。兩個...

細細品味大資料 初識hadoop

初識hadoop 之前在學校的時候一直就想學習大資料方面的技術,包括hadoop和機器學習啊什麼的,但是歸根結底就是因為自己太懶了,導致沒有堅持多長時間,加上一直為offer做準備,所以當時重心放在c 上面了 雖然c 也沒怎麼學 計畫在大四下有空餘時間再來慢慢學習。現在實習了,需要這方面的知識,這對...