1

文字列が別の文字列と等しいかどうかを確認するために、ループでチェックを行っています。簡単なもの。

ただし、チェックする文字列を追加し続けているようで、ループごとにチェックしている10種類の文字列があります。照合する文字列の配列を作成してからin_array();を実行する方がコード的には簡単ですが、どちらがより高速に解析され、より少ないシステムリソースを使用するのでしょうか。

配列

$hideme  = array(".", "..", "Thumb.db", "index.php", "icons", "index_backup.php",
     "style.css", "highlighter.css", "highlighter.js", "users");
if (!in_array($sub, $hideme)) {

文字列!=文字列

if ($sub != "." && $sub != ".." ...etc

違いはおそらくごくわずかであり、将来の参考のために興味があります。

4

3 に答える 3

6

最初のものを使用してください。速度に大きな違いはありませんが、読みやすさが本当の違いです。

CPUサイクルは安いです。プログラマーの時間はそうではありません。

于 2012-05-19T13:58:48.293 に答える
1

組み込み関数はコンパイルされたCコードであるため、常に高速です。PHPコードを解釈する必要があります。

CPUサイクルを本当に気にする場合は、isset()が最速なので、可能な値を配列キーとして設定するのが最速です。もちろん、CPUとメモリの使用量があります。したがって、システムリソースの使用量が少ないかどうかは、節約するリソースによって異なります。

@Kendall Freyが述べたように、これはマイクロ最適化であるため、コードを読みやすくし、プロファイラーがこのコードが実行に大きな影響を与えることを示さない限り、最適化については何もしないでください。

于 2012-05-19T14:26:34.757 に答える
0

$ hiddenme配列が大きくなった場合に簡単にスケーリングできる最も簡単な(そしておそらく最速の)解決策は、isset()を使用することです。

$hideme  = array(".", "..", "Thumb.db", "index.php", "icons", "index_backup.php",
 "style.css", "highlighter.css", "highlighter.js", "users");

if (!isset($hideme[$sub])) {
    // $sub is not in $hideme
}

小さな配列の場合、in_arrayは正常に機能しますが、一般に速度が遅く、配列が大きい場合は遅くなりすぎる可能性があります。

于 2014-09-29T10:24:26.517 に答える