<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[阿Tim日志]]></title> 
<link>https://atim.cn/index.php</link> 
<description><![CDATA[专业的php开发者.开发团队的带队人]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[阿Tim日志]]></copyright>
<item>
<link>https://atim.cn/post/449/</link>
<title><![CDATA[debug_backtrace 的性能测试]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[开发应用]]></category>
<pubDate>Fri, 17 Oct 2008 14:59:21 +0000</pubDate> 
<guid>https://atim.cn/post/449/</guid> 
<description>
<![CDATA[ 
	我最近在写一个语言更换的程序.准备把语言包写到一个数组里.然后再从里面调出来.<br/> 如:<br/><div class="code"><br/>$lang=array(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;Username&#039;=&gt;array(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;en&#039;=&gt;&#039;Username&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;cn&#039;=&gt;&#039;用户名&#039;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br/>$db_lang=&#039;cn&#039;;<br/>function __($language)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; global $lang,$db_lang;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $lang&#91;$language&#93;&#91;$db_lang&#93;;<br/>&#125;<br/></div><br/>但为了<a href="http://atim.cn/read.php/449.htm" target="_blank">效率</a>,不想把所有语言包都都引用到程序里.因为很多语言包都是只在一个程序里面才用到.所以我需要区分不同的的各种语言包的程序.所以我想用运行__()代码的文件地址作为区分的不同的语言包这样每次只要引用很小部分的内容可以得到我们需要的语言了.<br/>所以我想用<a href="http://atim.cn/read.php/449.htm" target="_blank">debug_backtrace</a>()来得到这个文件地址.我已经写好了相关的程序.但我想到一个问题,<a href="http://atim.cn/read.php/449.htm" target="_blank">效率</a>.这个函数本来是用于测试bug的时候用的.所以他不一定有很好的效率.其于这个的心态我对<a href="http://atim.cn/read.php/449.htm" target="_blank">debug_backtrace</a>()进行了测试<br/><div class="code"><br/>&lt;?<br/>/*<br/>*&nbsp;&nbsp;程序名称:测试debug_backtrace程序的性能<br/>*&nbsp;&nbsp;文 件 名:<br/>*&nbsp;&nbsp;作&nbsp;&nbsp;&nbsp;&nbsp;者:bkkkd<br/>*&nbsp;&nbsp;作者博客:http://atim.cn<br/>*&nbsp;&nbsp;开始时间:<br/>*&nbsp;&nbsp;结束时间:<br/>*&nbsp;&nbsp;作&nbsp;&nbsp;&nbsp;&nbsp;用:<br/>*&nbsp;&nbsp;文件地址:<br/>*&nbsp;&nbsp;数据结构:<br/>*/<br/>$count=empty($_GET&#91;&#039;count&#039;&#93;)?1:$_GET&#91;&#039;count&#039;&#93;;<br/>$reset=0;<br/>$c=array();<br/>$ic=empty($_GET&#91;&#039;ic&#039;&#93;)?1:$_GET&#91;&#039;ic&#039;&#93;;<br/>If($reset==1)<br/>&#123;<br/>&nbsp;&nbsp;$wdb=&quot;&lt;?php&#92;n&quot;;<br/>&nbsp;&nbsp;For($i=0; $i&lt;$count; $i++)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$wdb.=&quot;debug();&quot;;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;$wdb.=&quot;&#92;n?&gt;&quot;;<br/>&nbsp;&nbsp;For($i=0; $i&lt;1000; $i++)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;writeover (&quot;./test_$count/&quot;.$i.&quot;.php&quot;,$wdb);<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;If($count==1000)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;exit;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;$next_count=getNextNum($count);<br/>&nbsp;&nbsp;$URL=&quot;?count=$next_count&quot;;<br/>&nbsp;&nbsp;echo(&quot;&lt;meta http-equiv=&#039;refresh&#039; content=&#039;2;url=$URL&#039;&gt;&quot;);<br/>&#125;<br/>else<br/>&#123;<br/>&nbsp;&nbsp;RunTime_Begin();<br/>&nbsp;&nbsp;For($i=0; $i&lt;$ic; $i++)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Include &quot;./test_$count/&quot;.$i.&quot;.php&quot;;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;$runtime=RunTime_End();<br/>&nbsp;&nbsp;echo($runtime);<br/>&nbsp;&nbsp;writeover(&quot;./rs.cvs&quot;,&quot;$count&#92;t$ic&#92;t$runtime&#92;n&quot;,&quot;ab+&quot;);<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;If($ic==1000&amp;&amp;$count==1000)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;exit;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;elseif($ic==1000)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$next_ic=1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$next_count=getNextNum($count);<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;Else<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$next_ic=getNextNum($ic);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$next_count=$count;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;$URL=&quot;?ic=$next_ic&amp;count=$next_count&quot;;<br/>&nbsp;&nbsp;echo(&quot;&lt;meta http-equiv=&#039;refresh&#039; content=&#039;2;url=$URL&#039;&gt;&quot;);<br/>&#125;<br/>/**<br/> * function description:<br/> * @Date:<br/> * @param&nbsp;&nbsp;&nbsp;&nbsp;(type)parameter&nbsp;&nbsp;:description<br/>**/<br/>Function getNextNum($num)<br/>&#123;<br/>&nbsp;&nbsp;$next=1;<br/>&nbsp;&nbsp;Switch($num)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Case 1:$next=50;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Case 50:$next=100;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Case 100:$next=500;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Case 500:$next=1000;break;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;Return $next;<br/>&#125;<br/>/**<br/> * function description:<br/> * @Date:<br/> * @param&nbsp;&nbsp;&nbsp;&nbsp;(type)parameter&nbsp;&nbsp;:description<br/>**/<br/>Function debug()<br/>&#123;<br/>&nbsp;&nbsp;global $c;<br/>&nbsp;&nbsp;$r=debug_backtrace();<br/>&nbsp;&nbsp;$c&#91;&#93;=$r&#91;0&#93;&#91;&#039;file&#039;&#93;;<br/>&#125;<br/>function RunTime_Begin()<br/>&#123;<br/>&nbsp;&nbsp;global $_starttime;<br/>&nbsp;&nbsp;$_nowtime = explode(&quot; &quot;, microtime());<br/>&nbsp;&nbsp;$_starttime = $_nowtime&#91;1&#93; + $_nowtime&#91;0&#93;;<br/>&#125;<br/><br/>function RunTime_End()<br/>&#123;<br/>&nbsp;&nbsp;global $_starttime;<br/>&nbsp;&nbsp;$_nowtime = explode(&quot; &quot;, microtime());<br/>&nbsp;&nbsp;$_endtime = $_nowtime&#91;1&#93; + $_nowtime&#91;0&#93;;<br/>&nbsp;&nbsp;$_totaltime = $_endtime - $_starttime;<br/>&nbsp;&nbsp;return $_totaltime;<br/>&#125;<br/>function writeover($path,$data,$opentype=&#039;rb+&#039;,$lock=1)<br/>&#123;<br/>&nbsp;&nbsp;touch($path);<br/>&nbsp;&nbsp;$fp=fopen($path,$opentype);<br/>&nbsp;&nbsp;$lock==1?flock($fp,LOCK_EX):flock($fp,LOCK_SH);<br/>&nbsp;&nbsp;fwrite($fp,$data);<br/>&nbsp;&nbsp;if($opentype==&quot;rb+&quot;) ftruncate($fp,strlen($data));<br/>&nbsp;&nbsp;fclose($fp);<br/>&#125;<br/>?&gt;<br/></div><br/>第一个数据为一个文件内有多少个debug_backtrace()<br/>第二个数据为调用了多少个文件<br/>第三个数据为调用所需要的运行时间<br/><div class="code"><br/>1&nbsp;&nbsp;1&nbsp;&nbsp;0.000504016876221<br/>1&nbsp;&nbsp;50&nbsp;&nbsp;0.456976890564<br/>1&nbsp;&nbsp;100&nbsp;&nbsp;0.493342876434<br/>1&nbsp;&nbsp;500&nbsp;&nbsp;3.67333292961<br/>1&nbsp;&nbsp;1000&nbsp;&nbsp;5.43402886391<br/>50&nbsp;&nbsp;1&nbsp;&nbsp;0.012130022049<br/>50&nbsp;&nbsp;50&nbsp;&nbsp;0.517045974731<br/>50&nbsp;&nbsp;100&nbsp;&nbsp;0.655413866043<br/>50&nbsp;&nbsp;500&nbsp;&nbsp;4.47166490555<br/>50&nbsp;&nbsp;1000&nbsp;&nbsp;6.46373391151<br/>100&nbsp;&nbsp;1&nbsp;&nbsp;0.0187499523163<br/>100&nbsp;&nbsp;50&nbsp;&nbsp;0.537144899368<br/>100&nbsp;&nbsp;100&nbsp;&nbsp;0.711118936539<br/>100&nbsp;&nbsp;500&nbsp;&nbsp;4.77257990837<br/>100&nbsp;&nbsp;1000&nbsp;&nbsp;7.16184091568<br/>500&nbsp;&nbsp;1&nbsp;&nbsp;0.0180358886719<br/>500&nbsp;&nbsp;50&nbsp;&nbsp;0.777477025986<br/>500&nbsp;&nbsp;100&nbsp;&nbsp;1.17954492569<br/>500&nbsp;&nbsp;500&nbsp;&nbsp;7.0535929203<br/>500&nbsp;&nbsp;1000&nbsp;&nbsp;11.6655769348<br/>1000&nbsp;&nbsp;1&nbsp;&nbsp;0.0255968570709<br/>1000&nbsp;&nbsp;50&nbsp;&nbsp;1.3075799942<br/>1000&nbsp;&nbsp;100&nbsp;&nbsp;1.73514294624<br/>1000&nbsp;&nbsp;500&nbsp;&nbsp;9.95028400421<br/>1000&nbsp;&nbsp;1000&nbsp;&nbsp;17.112336874<br/></div><br/>从上面的数据来看.这个<a href="http://atim.cn/read.php/449.htm" target="_blank">debug_backtrace</a>()不适合多次使用.<br/>所以我决定采用另一个方案.以后再写我的方案.
]]>
</description>
</item><item>
<link>https://atim.cn/post/449/#blogcomment684</link>
<title><![CDATA[[评论] debug_backtrace 的性能测试]]></title> 
<author>lee &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sat, 18 Oct 2008 05:02:44 +0000</pubDate> 
<guid>https://atim.cn/post/449/#blogcomment684</guid> 
<description>
<![CDATA[ 
	[emot]grin[/emot]看不懂.php忘记了
]]>
</description>
</item>
</channel>
</rss>