ホームページ >バックエンド開発 >PHPチュートリアル >PHPプログラミングにおけるプログラム動作効率向上のアイデア例_PHPチュートリアル

PHPプログラミングにおけるプログラム動作効率向上のアイデア例_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:42:39781ブラウズ

ここからわかるように、2番目のコードは配列内のキーの数に応じて1 2 3の判定を連続して行うため、1番目のコードの判定回数は3回となり、 2番目のコードの判定回数は3回 コードセグメント判定回数は6回です

私は.NETからPHPに乗り換えて4年、最近高性能を追求し始めました〜〜
それで思い始めましたブログを書く時間です~
まずは物事を発見するためにドゥアンに来てください~
$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. " , ( $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 人。 " , ( $endTime - $startTime ) * 1000000 );
?>
上記のコードの出力結果は
us.
us.
しかし、どう見ても最初の段落のほうが面倒です。 2 番目の段落は構造が異なります。 2 番目の段落は明確です。
では、なぜ最初の段落は 2 番目の段落よりもはるかに高速に実行されるのでしょうか。
コードの最初の段落には if が 3 つしかないことがわかります。
どのようにして2 番目の段落には多くの if がありますか?
スイッチを逆アセンブルし、その基本的な実装原理を見てみましょう
スイッチ内の各ケースが Break; で終わる場合、
実際、このスイッチは複数のようなものです。 if{}else if{}

このメカニズムから、
foreach( $arr as $key => $value )
{
switch( $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 )
{

}
}
?>
理解するにはここから ご覧のとおり、2番目のコードは配列のキーの数に応じて判定回数が1 2 3で連続的に判定を行うので、1番目のコードの判定回数はは 3 で、2 番目のコードの判定数は 6 です

http://www.bkjia.com/PHPjc/486047.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/486047.html技術記事ここからわかるように、2番目のコードは配列内のキーの数に応じて1 2 3の判定を連続して行うため、1番目のコードの判定回数は3回となり、コードの 2 番目の部分の判断の数は 3 ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。