速度の比較: in_array と isset
大規模な配列を扱う場合、コードのパフォーマンスを最適化することが重要です。 in_array 関数と isset コンストラクトのどちらが速いですか?
in_array:
この関数は、配列を反復処理して一致するものを見つける線形検索を実行します。時間計算量は O(n) で、n は配列のサイズです。一方、
isset:
isset はハッシュを使用します。検索して、特定のキーが連想配列に存在するかどうかを判断します。これにより、in_array よりもはるかに速くなり、一定の時間計算量は O(1) になります。
パフォーマンス テスト:
この速度の違いを実証するには、次のテストを実行できます。ベンチマーク:
$a = array(); for ($i = 0; $i < 10000; ++$i) { $v = rand(1, 1000000); $a[$v] = $v; } $start = microtime(true); for ($i = 0; $i < 10000; ++$i) { isset($a[rand(1, 1000000)]); } $total_time = microtime(true) - $start; echo "isset: " . number_format($total_time, 6) . PHP_EOL; $start = microtime(true); for ($i = 0; $i < 10000; ++$i) { in_array(rand(1, 1000000), $a); } $total_time = microtime(true) - $start; echo "in_array: " . number_format($total_time, 6) . PHP_EOL;
結果:
テスト結果は、isset が in_array よりも大幅に高速であることを示し、定数時間計算量の利点を示しています。
結論:
の存在を確認する場合配列内の要素の場合は、パフォーマンスが高速であるため、 isset が推奨される選択肢です。ただし、要素の順序が重要な場合は、要素の順序を保持する in_array を使用する必要があります。
以上が配列要素をチェックする場合、`isset` は `in_array` より高速ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。