> 백엔드 개발 > PHP 튜토리얼 > PHP 고성능 쓰기

PHP 고성능 쓰기

WBOY
풀어 주다: 2016-07-29 08:43:59
원래의
962명이 탐색했습니다.

.NET에서 PHP로 전환한지 4년이 지났고 최근에는 고성능을 추구하기 시작했습니다~~
그래서 블로그를 써야겠다는 생각이 들었습니다~
먼저 발견해 볼까요~

코드 복사 코드는 다음과 같습니다.


$arr = array(
'attr1' => 1 ,
'attr2' => 1 ,
'attr3' => 1 ,
)
$startTime( true ); 1000 ; $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 < 1000 ; $i )
{
foreach( $arr as $key => $value )
{
switch( $key )
{
case 'attr1':
break
case 'attr2':
break;
case 'attr3':
break
}
}
$endTime( true ); >printf( "%d us.n " , ( $endTime - $startTime ) * 1000000 );


위 코드
의 출력 결과는

us입니다.
그런데, 아무리 봐도 첫 번째 문단이 두 번째 문단보다 더 번거롭고, 두 번째 문단만큼 구조도 명확하지 않습니다.
그러면 첫 번째 문단이 왜 ​​그렇게 많이 실행되는 걸까요? 두 번째 문단보다 빠르나요?
코드의 첫 번째 문단에서 ifs가 3개만 있는 것을 볼 수 있습니다.
두 번째 문단에는 몇 개가 있을까요?
스위치를 분해하여 기본 구현 원리를 살펴볼 수 있습니다.
스위치에서 각 케이스는 break;,
사실 이 스위치는 다중 if{}else if{}와 같습니다.
그래서 이 메커니즘에서



코드 복사

코드는 다음과 같습니다.foreach( $arr as $key => $value ) {

스위치 ( $key )

{
case 'attr1':
break
case 'attr2':
break
case 'attr3':
break; }
}





코드 복사

로 변환됩니다. 코드는 다음과 같습니다.

foreach ( $arr as $key => $value ) { if( $key == 'attr1' )

{

}
else if( $key == 'attr2' )
{
}
else if( $key == 'attr3' )
{
}
}


이해하려면,
여기에서 알 수 있듯이 두 번째 코드는 배열의 키 개수에 따라 1 2 3의 숫자로 계속해서 판단을 하게 되므로 첫 번째 코드의 판단 횟수는 3, 두 번째 코드의 판단 횟수는 3개입니다. 코드 세그먼트 판단 횟수는 6회
이므로 실행 효율성이 거의 두 배로 늘어납니다.
위에서는 PHP의 고성능 글쓰기에 대한 내용을 소개했으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.



관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿