phpやでif文を書く際に
①if{
②}elseif{
③}elseif{
④}elseif{
}
……
と
①if{
}
②if{
}
③if{
}
④if{
}
……
があるとして、④の処理をするとき、どちらの方が速いですか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
この程度の記法による速度差は、通常気にすべきでないものです。
一般的なPHPプログラムの場合、所要時間の大半はファイルの読み書きやDBアクセス、出力などで消費されますので、同じ動作が期待される場面での微妙な書き方の違い(1ミリ秒にもはるかに満たない程度でしょう)は、全体の実行速度に与える影響はほぼありません。
もちろん、これが1実行で何万回も回るループの中にあるような状況なら話は別ですが、その時はきちっとプロファイリングしてチューニングを行っていきましょう。
投稿2016/06/09 13:12
総合スコア145183
0
elseif
を使わない方の書き方,if
ブロックの中にreturn
を忘れてませんか?
php
1function func($value) { 2 if ($value === ...) { 3 ... 4 return; 5 } 6 if ($value === ...) { 7 ... 8 return; 9 } 10 if ($value === ...) { 11 ... 12 return; 13 } 14}
php
1function func($value) { 2 if ($value === ...) { 3 ... 4 } elseif ($value === ...) { 5 ... 6 } elseif ($value === ...) { 7 ... 8 } 9}
こういうことですよね?一般的にロジックが複雑になるつれ,早期return
する方法のほうが可読性がよくなってくる傾向にあるんじゃないかと思います.**実行速度に全く差はありません.**あくまで読みやすさの問題です.
なお関数で括らなくても,do...while
を活用して擬似的に早期return
を実現するような書き方も可能です.
php
1do { 2 if ($value === ...) { 3 ... 4 break; 5 } 6 if ($value === ...) { 7 ... 8 break; 9 } 10 if ($value === ...) { 11 ... 12 break; 13 } 14} while (false);
投稿2016/06/09 13:09
編集2016/06/09 13:11総合スコア5223
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
PHPにはくわしくないですが、そもそもロジックが違うと思いますよ、elseがある方が早いとは思いますが。
投稿2016/06/09 13:00
総合スコア4830
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
わずかにelse ifのほうが早いかと思います。
switchのほうが早いのは明らかですが。
$time_start = microtime(true);
// ここに測定したいPHPの処理を記述
$time = microtime(true) - $time_start;
echo $time . " seconds\r\n";
上記プログラムで計測できます。
別言語ですが
他の方の検証を追記しておきます。
http://hsp.tv/play/pforum.php?mode=pastwch&num=49136
投稿2016/06/09 13:05
編集2016/06/09 14:08総合スコア56
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。