ホームページ  >  記事  >  バックエンド開発  >  phpの高性能な書き込み

phpの高性能な書き込み

WBOY
WBOYオリジナル
2016-07-29 08:43:59949ブラウズ

.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 => $値)
{
switch( $key )
{
case 'attr1':
break;
case 'attr3':
}
}
}
$endTime = ( 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':


foreach( $arr as $key => $value )
{
if( $key = = 'attr1' )
{
}
else if( $key == 'attr2' )
{
}
else if( $key == 'attr3' )
{
}
}


を理解するには、
としてここからわかるように、2 番目のコードは配列内のキーの数に基づいて常に判断を行い、判断の数は 1+2+3 であるため、最初のコードの判断の数は 3 になります。 , そして、2番目のコードの判定回数は6回

なので、実行効率は2倍近くになります。 以上、PHP の高パフォーマンスな書き込みについて、その側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。