首頁 >後端開發 >php教程 >php 高效能書寫

php 高效能書寫

WBOY
WBOY原創
2016-07-29 08:43:59967瀏覽

從.NET轉去做PHP4年了,最近開始追求高性能了~~
所以開始覺得是時候要寫寫博客了~
來段發​​現物先~

複製程式碼 程式碼如下:


$arr = array(
'attr1' => 1 ,
'attr2' => 1 ,
'attr3' => 1 ,
);
$startTime = microtime( true );
for( $i = 0 ; $i {
if ( isset( $arr['attr1'] ) )
{
}
if( isset( $arr['attr2'] ) )
{
}
if( isset ( $arr['attr3'] ) )
{
}
}
$endTime = microtime( true );
printf( "%d us.n" , ( $endTime - $startTime ) * 1000000 );
$startTime = microtime( true );
for( $i = 0 ; $i {
foreach( $arr as $key => $value )
{
switch( $key )
{
case 'attr1':
break;
case 'attr2':
break
; case 'attr3':
break;
}
}
}
$endTime = microtime( true );
printf( "%d us.n" , ( $endTime - $startTime ) * 1000000 );


上面一段程式碼
輸出結果是
us.
us.
然而,怎麼看都是第一段比第二段繁瑣,而且結構沒有第二段清晰,
那麼為什麼第一段會比第二段執行快了這麼多呢
我們可以看到第一段的程式碼中,只有3個if,
那麼第二段會有多少個呢。
我們拆開了switch這個東西,可以去看看他的基本實作原理。
如果switch中,每一段case中都是用break;結束的話,
其實這個switch好比多個if{}else if{}
所以從這個機制,我們就可以把的

複製程式碼 程式碼如下:


foreach( $arr as $key => $value )
{
switch ( $key )
{
case 'attr1':
break;
case 'attr2':
break;
case 'attr3':
break;
; }
}


轉換成

複製程式碼 程式碼如下:



程式碼如下: $value )
{
if( $key == 'attr1' )
{
}
else if( $key == 'attr2' )
{
}
else if( $key == 'attr3' )
{
}
}



去理解, 從這裡🎜>來自這裡🎜>就可以看到,第二段程式碼會因應數組中的鍵的個數去不停地作出判斷次數為1+2+3的判斷,所以變成了第一段代碼判斷次數是3,而第二段程式碼判斷次數是6次
所以就導致了執行效率相差了接近一倍的速度。

以上就介紹了 php 高效能書寫,包括了方面的內容,希望對PHP教程有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn