array_unique() est la fonction intégrée offrant les meilleures performances pour la déduplication des tableaux. La méthode de la table de hachage offre les meilleures performances pour les fonctions personnalisées. La valeur de hachage est utilisée comme clé et la valeur est vide. La méthode round-robin est simple à mettre en œuvre mais inefficace. Il est recommandé d’utiliser des fonctions intégrées ou personnalisées pour la déduplication. array_unique() prend 0,02 seconde, array_reverse + array_filter() prend 0,04 seconde, la méthode de table de hachage prend 0,01 seconde et la méthode round-robin prend 0,39 seconde.
Introduction
La déduplication des tableaux fait référence à la suppression des éléments en double dans un tableau et à la conservation des valeurs uniques. PHP fournit un certain nombre de fonctions intégrées et personnalisées pour ce faire. Cet article comparera les performances de ces fonctions et fournira des exemples pratiques.
Fonction intégrée
array_unique()
: fonction intégrée, qui utilise une table de hachage pour supprimer les doublons, ce qui est plus efficace. array_unique()
:内置函数,通过 哈希表 进行去重,效率较高。array_reverse()
+ array_filter()
:使用 array_reverse()
逆序数组,然后结合 array_filter()
移除重复元素。自定义函数
实战案例
假设我们有一个包含 100 万个整数的数组 $array
。
$array = range(1, 1000000); $iterations = 100;
性能测试
function test_array_unique($array, $iterations) { $total_time = 0; for ($i = 0; $i < $iterations; $i++) { $start_time = microtime(true); $result = array_unique($array); $end_time = microtime(true); $total_time += $end_time - $start_time; } $avg_time = $total_time / $iterations; echo "array_unique: $avg_time seconds\n"; } function test_array_reverse_array_filter($array, $iterations) { $total_time = 0; for ($i = 0; $i < $iterations; $i++) { $start_time = microtime(true); $result = array_filter(array_reverse($array), 'array_unique'); $end_time = microtime(true); $total_time += $end_time - $start_time; } $avg_time = $total_time / $iterations; echo "array_reverse + array_filter: $avg_time seconds\n"; } function test_hash_table($array, $iterations) { $total_time = 0; for ($i = 0; $i < $iterations; $i++) { $start_time = microtime(true); $result = array_values(array_filter($array, function ($value) { static $hash_table = []; if (isset($hash_table[$value])) { return false; } $hash_table[$value] = true; return true; })); $end_time = microtime(true); $total_time += $end_time - $start_time; } $avg_time = $total_time / $iterations; echo "hash table: $avg_time seconds\n"; } function test_loop($array, $iterations) { $total_time = 0; for ($i = 0; $i < $iterations; $i++) { $start_time = microtime(true); $result = array_values(array_filter($array, function ($value) use (&$array) { for ($j = 0; $j < count($array); $j++) { if ($j == $i) { continue; } if ($value == $array[$j]) { return false; } } return true; })); $end_time = microtime(true); $total_time += $end_time - $start_time; } $avg_time = $total_time / $iterations; echo "loop: $avg_time seconds\n"; } test_array_unique($array, $iterations); test_array_reverse_array_filter($array, $iterations); test_hash_table($array, $iterations); test_loop($array, $iterations);
结果
使用 100 万个整数的数组,每个函数的平均运行时间如下:
结论
根据测试结果,array_unique()
是去重数组最快的内置函数,而哈希表法是性能最优的自定义函数。循环法虽然容易实现,但效率较低。在处理大型数组时,建议采用 array_unique()
array_reverse()
+ array_filter()
: utilisez array_reverse()
pour inverser le tableau, puis combinez-le avec array_filter() Supprimez les éléments en double.
$array
contenant 1 million d'entiers. 🎜rrreee🎜🎜Test de performances🎜🎜rrreee🎜🎜Résultats🎜🎜🎜En utilisant un tableau de 1 million d'entiers, la durée d'exécution moyenne de chaque fonction est la suivante : 🎜🎜🎜array_unique : 0,02 seconde🎜array_reverse + ter : 0,04 seconde 🎜Méthode de table de hachage : 0,01 seconde🎜Méthode de boucle : 0,39 seconde🎜🎜Conclusion🎜🎜🎜D'après les résultats du test, array_unique() Il s'agit de la fonction intégrée la plus rapide pour la déduplication de tableaux, tandis que la méthode de la table de hachage est la fonction personnalisée offrant les meilleures performances. Bien que la méthode round-robin soit facile à mettre en œuvre, elle est moins efficace. Lorsqu'il s'agit de grands tableaux, il est recommandé d'utiliser <code>array_unique()
ou la méthode de table de hachage pour la déduplication. 🎜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!