ホームページ  >  記事  >  バックエンド開発  >  異なる PHP データ構造間のパフォーマンスの比較

異なる PHP データ構造間のパフォーマンスの比較

PHPz
PHPzオリジナル
2024-05-07 14:33:02287ブラウズ

PHP では、要素の取得、検索、削除ではハッシュ テーブルが最も高速ですが、要素の追加では配列が最も高速です。連想配列は順序付けされたアクセスを必要とし、要素の追加ではハッシュ テーブルよりも高速です。動作が遅いです。

不同 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 サイトの他の関連記事を参照してください。

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