php代码实施效率

WBOY
WBOYasal
2016-06-13 10:54:54899semak imbas

php代码执行效率

这里说一些代码的执行情况,虽然php执行起来很快,但是蚊子虽小,总还是肉吧~

?

下面是一些代码的执行时间。

?

//以下程式执行次数$_i =1000000;
?

下面我们来看下for循环

?

/** * 这就是以前经常写的循环和判断 * for(i=0;i<p>?<span style="font-size: medium;">同样是循环($_i)次,而下面的却比上面的少花费0.01~0.02秒。原因是每次不用去判断$_i,因为当$_i=0的时后,判断就为false了。</span></p><p>?</p><p><span style="font-size: medium;">所以我们的if判断也可以这样写</span></p><pre name="code" class="java">$_val = 1;if ($_val) {}

?只要是数字都是ture,0就是false啦


下面这个是很容易犯的错误,在循环中声明变量,我们来看下执行时间

$_val = 1;for($_i;$_i;$_i--){	if ($_val) {		}}/** * 执行时间 * 0.100801944733 * 0.0974791049957 * 0.0993800163269 * 0.112987041473 *///把变量放在循环中for($_i;$_i;$_i--){	$_val = 1;	if ($_val) {	}}/** * 执行时间 * 0.133583068848 * 0.117377996445 * 0.116209983826 * 0.12203502655 */

?上面的代码可以看出差距了吧


判断或者的情况

$_val = 3;for($_i;$_i;$_i--) {	if (3 == $_val || 4 == $_val || 5 == $_val) {	}}/** * 执行时间 * 0.11983704567 * 0.12117600441 * 0.129379987717 * 0.131067991257 */$_val = 5;for($_i;$_i;$_i--) {	if (3 == $_val || 4 == $_val || 5 == $_val) {	}}/** * 执行时间 * 0.27806186676 * 0.316290855408 * 0.259559869766 * 0.277565956116 *///用php自带的函数$_val = 5;for($_i;$_i;$_i--) {	if (in_array($_val,array(3,4,5))) {	}}/** * 1.13307905197 * 1.12578582764 * 1.14648389816 */

?有php函数就用php函数吧,你会发现php函数简单好用。


还有一个查询的

//比如查詢統計的時候,查看該會員某些條件下是否有po過文章SELECT id FROM post WHRE user_id='{$_user_id}' AND ......//這樣寫沒錯啦,就是效率很慢,其實就是查詢是否有該數據,可以在後面添加一限制條數  LIMIT 1SELECT id FROM post WHRE user_id='{$_user_id}' AND ...... LIMIT 1
?

希望以上写的对大家有所帮助。

?

1 楼 liuzhiqiangruc 2011-07-02  
哥那个或者的例子第一个快是因为比较到3的时候后两个比较不用做来了。而用in_array的问题在于每次循环要构造一个array(3,4,5),构造一个array是比较费事的。还有为啥要在循环里面构造array,在循环外够在array不是更快吗?


此外,最后一个查询的例子,加不加limit 1取决于业务需求吧,如果只要查得一条记录,加上当然没问题。

2 楼 wangyangtoy 2011-07-06  
liuzhiqiangruc 写道
哥那个或者的例子第一个快是因为比较到3的时候后两个比较不用做来了。而用in_array的问题在于每次循环要构造一个array(3,4,5),构造一个array是比较费事的。还有为啥要在循环里面构造array,在循环外够在array不是更快吗?


此外,最后一个查询的例子,加不加limit 1取决于业务需求吧,如果只要查得一条记录,加上当然没问题。

我举的例子,就是说明如果用“||"的话是要看运气的,而用in_array用的速度都一样哦~
你说的构造一个array(3,4,5),你说的对,可以把它拿到循环外面,这个我上面也有说明
Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn