array_unique() ist die integrierte Funktion mit der besten Leistung zum Deduplizieren von Arrays. Die Hash-Tabellenmethode bietet die beste Leistung für benutzerdefinierte Funktionen. Der Hash-Wert wird als Schlüssel verwendet und der Wert ist leer. Die Round-Robin-Methode ist einfach zu implementieren, aber ineffizient. Es wird empfohlen, integrierte oder benutzerdefinierte Funktionen für die Deduplizierung zu verwenden. array_unique() dauert 0,02 Sekunden, array_reverse + array_filter() dauert 0,04 Sekunden, die Hash-Tabellenmethode dauert 0,01 Sekunden und die Round-Robin-Methode dauert 0,39 Sekunden.
Einführung
Arrays deduplizieren bezieht sich auf das Entfernen doppelter Elemente in einem Array und das Beibehalten eindeutiger Werte. PHP bietet hierfür eine Reihe integrierter und benutzerdefinierter Funktionen. In diesem Artikel wird die Leistung dieser Funktionen verglichen und praktische Beispiele bereitgestellt.
Eingebaute Funktion
array_unique()
: Integrierte Funktion, die eine Hash-Tabelle verwendet, um Duplikate zu entfernen, was effizienter ist. 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()
: Verwenden Sie array_reverse()
, um das Array umzukehren, und kombinieren Sie es dann mit array_filter() Doppelte Elemente entfernen.
$array
mit 1 Million Ganzzahlen. 🎜rrreee🎜🎜Leistungstest🎜🎜rrreee🎜🎜Ergebnisse🎜🎜🎜Bei Verwendung eines Arrays von 1 Million Ganzzahlen ist die durchschnittliche Laufzeit jeder Funktion wie folgt: 🎜🎜🎜array_unique: 0,02 Sekunden🎜array_reverse + array_filter: 0,04 Sekunden 🎜Hash-Tabellenmethode: 0,01 Sekunden🎜Loop-Methode: 0,39 Sekunden🎜🎜Fazit🎜🎜🎜Den Testergebnissen zufolge array_unique() Es ist die schnellste integrierte Funktion zum Deduplizieren von Arrays, während die Hash-Tabellenmethode die benutzerdefinierte Funktion mit der besten Leistung ist. Obwohl die Round-Robin-Methode einfach zu implementieren ist, ist sie weniger effizient. Beim Umgang mit großen Arrays wird empfohlen, zur Deduplizierung <code>array_unique()
oder die Hash-Tabellenmethode zu verwenden. 🎜Das obige ist der detaillierte Inhalt vonLeistungsvergleich der Verwendung integrierter PHP-Funktionen und benutzerdefinierter Funktionen zur Deduplizierung von Arrays. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!