Liste der Big-O für PHP-Funktionen
In PHP integrierte Array-Funktionen können hinsichtlich ihrer zeitlichen Komplexität und dem Verständnis ihrer Größe erheblich variieren -O trägt zur Optimierung der Codeleistung bei. Durch Benchmarks und Codeanalyse wurde eine umfassende Liste von Big-O für verschiedene array_*-Funktionen zusammengestellt:
Lookups
- array_key_exists/isset: O( n) (praktisch nahe an O(1))
- in_array/array_search: O(n)
Warteschlangenfunktionen
- array_push: O(∑ var_i, für alle i)
- array_pop: O (1)
- array_shift: O(n)
- array_unshift: O(n ∑ var_i, für alle i)
Schnittpunkt, Vereinigung, Subtraktion
- array_intersect_key (100 % Schnittmenge): O(Max(param_i_size) * ∑param_i_count, für alle i)
- array_intersect (100 % Schnittmenge): O(n^2 * ∑param_i_count, für alle i)
- array_intersect_assoc (100 % Schnittmenge): O(Max( param_i_size) * ∑param_i_count, für alle i)
- array_diff: O(π param_i_size, für alle i)
- array_diff_key: O(∑ param_i_size, für i != 1)
- array_merge: O(∑ array_i , ich != 1)
- (union): O(n), wobei n die Größe des zweiten Arrays ist
- array_replace: O(∑ array_i , für alle i)
Zufällig
- shuffle: O(n)
- array_rand: O(n)
Offensichtlich Big-O
- array_fill: O(n)
- array_fill_keys: O(n)
- range: O(n)
- array_splice: O(Offset-Länge)
- array_slice: O(Offset-Länge) oder O(n), wenn Länge = NULL
- array_keys/values/reverse: O(n)
- array_pad: O(pad_size)
- array_flip: O(n)
- array_sum/product/reduce/filter/map/chunk/combine: O(n)
Hinweis zu Array-Lookups
Während Array-Lookups in PHP theoretisch O(n) sind, verhalten sie sich effektiv wie O(1) für praktischsten Werte. Benchmarking bestätigt dieses Verhalten mit einem Zeitanstieg von nur etwa 50 % zwischen N=1 und N=1.000.000 Suchvorgängen.
Das obige ist der detaillierte Inhalt vonWas sind die Big-O-Notationen für gängige PHP-Array-Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!