程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP編程之提高程序運行效率思路實例講解

PHP編程之提高程序運行效率思路實例講解

編輯:關於PHP編程

從這裡就可以看到,第二段代碼會因應數組中的鍵的個數去不停地作出判斷次數為1 2 3的判斷,所以變成了第一段代碼判斷次數是3,而第二段代碼判斷次數是6次

從.NET轉去做PHP4年了,最近開始追求高性能了~~
所以開始覺得是時候要寫寫博客了~
來段發現物先~
<?php
$arr = array(
attr1 => 1 ,
attr2 => 1 ,
attr3 => 1 ,
);
$startTime = microtime( true );
for( $i = 0 ; $i < 1000 ; $i )
{
if( isset( $arr[attr1] ) )
{
}
if( isset( $arr[attr2] ) )
{
}
if( isset( $arr[attr3] ) )
{
}
}
$endTime = microtime( true );
printf( "%d us. " , ( $endTime - $startTime ) * 1000000 );
$startTime = microtime( true );
for( $i = 0 ; $i < 1000 ; $i )
{
foreach( $arr as $key => $value )
{
switch( $key )
{
case attr1:
break;
case attr2:
break;
case attr3:
break;
}
}
}
$endTime = microtime( true );
printf( "%d us. " , ( $endTime - $startTime ) * 1000000 );
?>
上面一段代碼
輸出結果是
us.
us.
然而,怎麼看都是第一段比第二段繁瑣,而且結構沒有第二段清晰,
那麼為什麼第一段會比第二段執行快了這麼多呢
我們可以看到第一段的代碼中,只有3個if,
那麼第二段會有多少個呢。
我們拆開了switch這個東西,可以去看看他的基本實現原理。
如果switch中,每一段case中都是使用break;結束的話,
其實這個switch好比多個if{}else if{}

所以從這個機制,我們就可以把的
<?php
foreach( $arr as $key => $value )
{
switch( $key )
{
case attr1:
break;
case attr2:
break;
case attr3:
break;
}
}
?>
轉換成
<?php
foreach( $arr as $key => $value )
{
if( $key == attr1 )
{

}
else if( $key == attr2 )
{

}
else if( $key == attr3 )
{

}
}
?>
去理解,從這裡就可以看到,第二段代碼會因應數組中的鍵的個數去不停地作出判斷次數為1 2 3的判斷,所以變成了第一段代碼判斷次數是3,而第二段代碼判斷次數是6次

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved