Big-O für PHP-Funktionen
Bei der Arbeit mit PHP kann die Effizienz verschiedener integrierter Funktionen erheblich variieren. Dieser Artikel soll Einblicke in ihre theoretischen (oder praktischen) Big-O-Zeiten geben.
Lookups
- array_key_exists: O(n), aber effektiv nah dran zu O(1) aufgrund von Hash-Suchen.
- isset($array[$index]): O(n), ebenfalls nahe bei O(1) aufgrund von Hash-Suchen.
- in_array: O(n), langsamer als Hash-basierte Suchvorgänge.
- array_search: O(n), ähnlich wie in_array.
Warteschlange Funktionen
- array_push: O(∑ var_i, für alle i)
- array_pop: O(1)
- array_shift: O(n), re -indiziert Schlüssel.
- array_unshift: O(n ∑ var_i, für alle i), langsamer aufgrund der Neuindizierung.
Array Intersection, Union, Subtraction
- array_intersect_key: O(Max(param_i_size) *∑param_i_count, für alle i), wenn der Schnittpunkt ist 100 %.
- array_intersect: O(n^2*∑param_i_count, für alle i), wenn der Schnittpunkt 100 % beträgt.
- array_intersect_assoc: Ähnlich wie array_intersect_key.
- array_diff: O(π param_i_size, für alle i), Produkt von alle Parametergrößen.
- array_diff_key: O(∑ param_i_size, für i != 1).
Zufällig
- Shuffle : O(n)
- array_rand: O(n)
Offensichtliches 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 die Länge NULL ist
- array_keys: O(n )
- array_values: O(n)
- array_reverse: O(n)
Hinweis
- Alle Berechnungen gehen davon aus, dass Hash-Suchen O(1) sind ).
- Die asymptotische Leistung kann je nach spezifischen Implementierungsdetails und der Eingabe variieren Daten.
- Arrays sind nullbasiert, daher pusht array_push an das Ende des Arrays.
Das obige ist der detaillierte Inhalt vonWas sind die Big-O-Zeitkomplexitäten gängiger PHP-Array-Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!