<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post/108/</link>
<title><![CDATA[细细品味PHP程序的算法]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 11 Oct 2006 07:50:20 +0000</pubDate> 
<guid>http://www.dzhope.com/post/108/</guid> 
<description>
<![CDATA[ 
	 &nbsp; &nbsp;在一般的应用中，PHP的程序员会比较少的注意到php程序的细微算法对性能影响的问题，但在处理一些比较占用资源的东西的时候，适当调整算法，会让程序的性能整倍的提高。<br/> &nbsp; &nbsp;这几天，我在研究分词的算法，如果不预先载入词典的话，那种运算速度简直惨不忍睹，因此我考虑了预先载入词典在一个数组中的做法，我手上有一个十多万词汇的词典，开始的时候，用这样的方式载入： <br/><br/>$fp = fopen(dirname(__FILE__).&quot;/mydic.txt&quot;,&quot;r&quot;);<br/>while($wd = fgets($fp,1024)){<br/> $ws = split(&quot;`&quot;,trim($wd));<br/> $m_dic[$ws[0]][$ws[1]] = $ws[2];<br/>}<br/>fclose($fp); <br/><br/>这样一测试，发现分析时候慢吞吞的，后来通过检测执行时间才发现，原来载入词典居然用了 1.5 秒多，也难怪！<br/><br/>数据格式为：<br/>0列：前两词的拼音，1列为：词，2列为：词的长度<br/>如：<br/>al`奥林匹克运动会`14<br/>al`阿拉伯的劳伦斯`14<br/>as`埃塞俄比亚高原`14<br/>wp`旺铺租售`8 &nbsp;<br/>wq`网球王子`8 &nbsp;<br/>wq`外企服务`8<br/><br/><br/><br/>我试一下不作任运作算，只读一遍数据文件： <br/><br/>$fp = fopen(dirname(__FILE__).&quot;/mydic.txt&quot;,&quot;r&quot;);<br/>while($wd = fgets($fp,24)){<br/> //$ws = split(&quot;`&quot;,trim($wd));<br/> //$m_dic[$ws[0]][$ws[1]] = $ws[2];<br/>}<br/>fclose($fp); <br/><br/>经测试只用了：0.18 秒，显然真正占用时间的代码是： <br/><br/>$ws = split(&quot;`&quot;,trim($wd));<br/>$m_dic[$ws[0]][$ws[1]] = $ws[2]; <br/><br/>这两行代码，我把它换成这个样子： <br/><br/>$fp = fopen(dirname(__FILE__).&quot;/mydic.txt&quot;,&quot;r&quot;);<br/>while($wd = fgets($fp,24)){<br/> $WordEnd = strpos($wd,&quot;`&quot;,3);<br/> $m_dic[$wd[0].$wd[1]][substr($wd,3,$WordEnd-3)] = ($WordEnd-3)*2;<br/>}<br/>fclose($fp); <br/><br/>这样测试就只有 0.7 秒多，然后把词典中词的长度去除，变为： <br/><br/>$fp = fopen(dirname(__FILE__).&quot;/mydic.txt&quot;,&quot;r&quot;);<br/>while($wd = fgets($fp,18)){<br/> $WordEnd = strlen($wd)-2;// 2是&quot; &quot;的长度<br/> $m_dic[$wd[0].$wd[1]][substr($wd,3,$WordEnd-3)] = ($WordEnd-3)*2;<br/>}<br/>fclose($fp); <br/><br/>又快了 0.07 秒左右，速度在 0.63 秒中徘徊，这和原来的 1.5 是多大的差别呀！<br/><br/>Tags - <a href="http://www.dzhope.com/tags/php/" rel="tag">php</a> , <a href="http://www.dzhope.com/tags/php%25E7%25AE%2597%25E6%25B3%2595/" rel="tag">php算法</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/108/#blogcomment2715</link>
<title><![CDATA[[评论] 细细品味PHP程序的算法]]></title> 
<author>注册香港公司 &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Fri, 26 Jan 2007 03:29:11 +0000</pubDate> 
<guid>http://www.dzhope.com/post/108/#blogcomment2715</guid> 
<description>
<![CDATA[ 
	正研究中文分词中........
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/108/#blogcomment2727</link>
<title><![CDATA[[评论] 细细品味PHP程序的算法]]></title> 
<author>dictworld &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Mon, 26 Mar 2007 07:33:56 +0000</pubDate> 
<guid>http://www.dzhope.com/post/108/#blogcomment2727</guid> 
<description>
<![CDATA[ 
	尽量用数据库
]]>
</description>
</item>
</channel>
</rss>