PHP では、要素の取得、検索、削除ではハッシュ テーブルが最も高速ですが、要素の追加では配列が最も高速です。連想配列は順序付けされたアクセスを必要とし、要素の追加ではハッシュ テーブルよりも高速です。動作が遅いです。
異なる PHP データ構造間のパフォーマンス比較
PHP 開発では、アプリケーションのパフォーマンスにとって適切なデータ構造を選択することが重要です。この記事では、PHP のいくつかの一般的なデータ構造のパフォーマンスを比較し、結論を検証するための実践的なケースを示します。集合 データ構造 ((インデックス付き配列)
Associal Array 新しい要素の追加
要素の削除$array = range(1, 100000);
$key = 50000;
// 数组(非有序)
$start_time = microtime(true);
$value = $array[$key];
$elapsed_time = microtime(true) - $start_time;
echo "Indexed array: $elapsed_time seconds\n";
// 关联数组(有序)
$array = array_flip($array);
$start_time = microtime(true);
$value = $array[$key];
$elapsed_time = microtime(true) - $start_time;
echo "Associative array: $elapsed_time seconds\n";
// 哈希表
$hash = [];
foreach ($array as $k => $v) {
$hash[$k] = $v;
}
$start_time = microtime(true);
$value = $hash[$key];
$elapsed_time = microtime(true) - $start_time;
echo "Hash table: $elapsed_time seconds\n";
// 数组(非有序) $start_time = microtime(true); $value = array_search($key, $array); $elapsed_time = microtime(true) - $start_time; echo "Indexed array: $elapsed_time seconds\n"; // 关联数组(有序) // 使用 array_flip 进行有序转换 $array = array_flip($array); $start_time = microtime(true); $value = array_search($key, $array); $elapsed_time = microtime(true) - $start_time; echo "Associative array: $elapsed_time seconds\n"; // 哈希表 $start_time = microtime(true); $value = isset($hash[$key]) ? $hash[$key] : null; $elapsed_time = microtime(true) - $start_time; echo "Hash table: $elapsed_time seconds\n";
特定の要素の検索では、やはりハッシュ テーブルが優先されますが、配列のパフォーマンスは最悪です。
新しい要素の追加
// 数组(非有序) $start_time = microtime(true); $array[] = $key; $elapsed_time = microtime(true) - $start_time; echo "Indexed array: $elapsed_time seconds\n"; // 关联数组(有序) $start_time = microtime(true); $array[$key] = $key; $elapsed_time = microtime(true) - $start_time; echo "Associative array: $elapsed_time seconds\n"; // 哈希表 $start_time = microtime(true); $hash[$key] = $key; $elapsed_time = microtime(true) - $start_time; echo "Hash table: $elapsed_time seconds\n";
結果:
新しい要素を追加する場合、ハッシュ テーブルと配列のパフォーマンスはほぼ同じですが、連想配列はわずかに遅くなります。
要素の削除
// 数组(非有序) $start_time = microtime(true); unset($array[$key]); $elapsed_time = microtime(true) - $start_time; echo "Indexed array: $elapsed_time seconds\n"; // 关联数组(有序) $start_time = microtime(true); unset($array[$key]); $elapsed_time = microtime(true) - $start_time; echo "Associative array: $elapsed_time seconds\n"; // 哈希表 $start_time = microtime(true); unset($hash[$key]); $elapsed_time = microtime(true) - $start_time; echo "Hash table: $elapsed_time seconds\n";
結果:
要素の削除では、ハッシュ テーブルは配列や連想配列よりも大幅に優れたパフォーマンスを発揮します。
結論
パフォーマンスを比較した後、次の結論を導き出すことができます:
ハッシュ テーブルは、個々の要素の取得、特定の要素の検索、および要素の削除において優れたパフォーマンスを発揮します。 順序付けされたアクセスが必要ない場合、新しい要素を追加するには配列が最も高速です。連想配列は、順序付けされたアクセスが必要な場合はハッシュ テーブルよりも遅くなりますが、新しい要素を追加する場合は高速になります。
以上が異なる PHP データ構造間のパフォーマンスの比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。