Maison  >  Article  >  développement back-end  >  Comparaison des performances entre différentes structures de données PHP

Comparaison des performances entre différentes structures de données PHP

PHPz
PHPzoriginal
2024-05-07 14:33:02328parcourir

En PHP, la table de hachage est la plus rapide pour récupérer, trouver et supprimer des éléments, mais le tableau est le plus rapide lors de l'ajout d'éléments ; le tableau associatif nécessite un accès ordonné et est plus rapide que la table de hachage lors de l'ajout d'éléments, mais dans d'autres cas. L'opération est lente.

不同 PHP 数据结构之间的性能对比

Comparaison des performances entre différentes structures de données PHP

Dans le développement PHP, le choix de la bonne structure de données est crucial pour les performances de l'application. Cet article comparera les performances de plusieurs structures de données courantes en PHP et fournira des cas pratiques pour vérifier les conclusions.组 Structure des données ((Indexed Array)

Associal Array Ajouter de nouveaux éléments

Supprimer des éléments
  • Cas pratique
Récupérer un seul élément

$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";

Résultats :
  • Les tables de hachage sont nettement plus rapides que tableaux et tableaux associatifs pour récupérer des éléments uniques.
  • Trouver un élément spécifique
  • // 数组(非有序)
    $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";
Résultats :

Pour trouver un élément spécifique, les tables de hachage gagnent à nouveau, tandis que les tableaux ont les pires performances.

Ajouter un nouvel élément

// 数组(非有序)
$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";

Résultats :

Pour l'ajout de nouveaux éléments, les performances des tables de hachage et des tableaux sont proches, tandis que les tableaux associatifs sont légèrement plus lents.

Suppression d'éléments

// 数组(非有序)
$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";

Résultats :

Les tables de hachage fonctionnent nettement mieux que les tableaux et les tableaux associatifs pour supprimer des éléments.

Conclusion

Après la comparaison des performances, nous pouvons tirer les conclusions suivantes :

Les tables de hachage ont d'excellentes performances pour récupérer des éléments individuels, trouver des éléments spécifiques et supprimer des éléments.

Les tableaux sont les plus rapides pour ajouter de nouveaux éléments si un accès ordonné n'est pas requis.

Les tableaux associatifs sont plus lents que les tables de hachage lorsqu'un accès ordonné est requis, mais plus rapides lors de l'ajout de nouveaux éléments.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn