php ハイパフォーマンスライティング_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:33:33
オリジナル
890 人が閲覧しました

.NET から PHP に切り替えてから 4 年が経ち、最近、高性能を追求し始めました~~
それで、ブログを書く時期が来たと思い始めました~
まずは何かを見つけてみましょう~

コードをコピーしてください コードは次のとおりです:

$arr = array(
'attr1' => 1 ,
'attr2' => 1 ,
'attr3' => 1 ,
); ( 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 'attr3':
}
$ endTime = microtime( true );
printf ( "%d us.n" , ( $endTime - $startTime ) * 1000000 );
上記のコードの出力結果は
us です。どう見ても、最初の段落は 2 番目の段落よりも優れています 面倒で、構造は 2 番目の段落ほど明確ではありません
では、なぜ最初の段落は 2 番目の段落よりもはるかに高速に実行されるのでしょうか?コードの最初の段落には if が 3 つしかないことがわかります。
その後、2 番目の段落には if がいくつありますか?
スイッチを分解し、その基本的な実装原理を確認できます。
スイッチ内の各ケースが Break; で終わる場合、
実際、このスイッチは複数の if{}else if{} のようなものです

このメカニズムからコードをコピーできます




コードは次のとおりです:


foreach( $arr as $key => $value )
{
switch( $key )
{
case 'attr1':
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回


となり、実行効率が2倍近くになります。



http://www.bkjia.com/PHPjc/322581.html
www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/322581.html

技術記事

.NET から PHP に切り替えてから 4 年が経ち、最近、高性能を追求し始めました~~ それで、ブログを書く時期が来たと思い始めました~ まずは何かを見つけましょう~ 次のようにコードをコピーします: $ arr = array( 'で...

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート