
Verstehen der zeitlichen Komplexität integrierter PHP-Funktionen
Verschiedene integrierte PHP-Funktionen weisen unterschiedliche zeitliche Komplexitäten beim Umgang mit Datenstrukturen auf. Dieser Artikel enthält eine umfassende Liste theoretischer und praktischer Big-O-Zeiten für diese Funktionen, sodass Entwickler ihre Codeleistung optimieren können.
Interessante Punkte
-
isset/array_key_exists: Deutlich schneller als in_array und array_search für Suchvorgänge.
-
(Union): Etwas schneller als array_merge und bietet eine präzisere Syntax zum Kombinieren arrays.
-
shuffle: Besitzt die gleiche Big-O-Komplexität wie array_rand, sodass beide Funktionen für die Randomisierung von Daten geeignet sind.
-
array_pop/array_push: Aufgrund der dabei entstehenden Strafe schneller als array_shift/array_unshift Neuindizierung.
Suchvorgänge
-
array_key_exists: Effektiv O(1), da die Hash-Suche nahezu augenblicklich erfolgt, trotz ihres theoretischen O( n) Komplexität.
-
isset( $array[$index] ): Ähnlich wie array_key_exists, demonstriert nahezu konstante Zeitkomplexität.
-
in_array: O(n), da eine lineare Suche durch das Array durchgeführt wird.
-
array_search: O(n), nutzt die gleiche Kernfunktion wie in_array, gibt aber die zurück value.
Warteschlangenfunktionen
-
array_push: O(∑ var_i, für alle i), wobei var_i zusätzliche Werte darstellt, die als Argumente übergeben werden.
-
array_pop: O(1).
-
array_shift: O(n), aufgrund der erforderlichen Neuindizierung.
-
array_unshift: O(n ∑ var_i, für alle i), wiederum resultierend aus der notwendigen Neuindizierung.
Array Schnittmenge, Vereinigung, Subtraktion
-
array_intersect_key: Wenn die Schnittmenge 100 % beträgt, O(Max(param_i_size) * ∑param_i_count, for all i); wenn der Schnittpunkt 0 % beträgt, O(∑param_i_size, für alle i).
-
array_intersect: Wenn der Schnittpunkt 100 % beträgt, O(n^2 * ∑param_i_count, für alle i); wenn die Schnittmenge 0 % beträgt, O(n^2).
-
array_intersect_assoc: Ähnlich wie array_intersect_key, weist jedoch die gleichen Big-O-Zeitkomplexitäten auf.
-
array_diff : O(π param_i_size, für alle i), repräsentiert das Produkt des Parameters Größen.
-
array_diff_key: O(∑ param_i_size, für i != 1), da es die Iteration über das erste Array ausschließt.
-
array_merge: O(∑ array_i, i != 1), keine Iteration über die erste erforderlich array.
-
(Union): O(n), wobei n die Größe des zweiten Arrays ist, was einen geringeren Overhead verursacht als array_merge.
-
array_replace: O(∑ array_i, für alle i).
Random
-
Shuffle: O(n).
-
array_rand: O (n), mit einer linearen Suche.
Offensichtlich Big-O
-
array_fill: O(n).
-
array_fill_keys: O(n).
- Bereich: O(n).
-
array_splice: O(Offset-Länge).
-
array_slice: O(Offset-Länge) oder O(n), wenn Länge = NULL.
-
array_keys: O(n).
-
array_values: O(n).
-
array_reverse: O(n).
-
array_pad: O(pad_size).
-
array_flip: O(n).
-
array_sum: O(n).
-
array_product: O(n).
-
array_reduce: O(n).
-
array_filter: O(n).
-
array_map: O(n).
-
array_chunk: O(n).
-
array_combine: O(n).
Das obige ist der detaillierte Inhalt vonWas sind die zeitlichen Komplexitäten gängiger in PHP integrierter Array-Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn