PHP 函數的Big-O 列表
PHP 內建陣列函數的時間複雜度可能有很大差異,並且了解它們的Big -O 有助於優化程式碼效能。透過基準測試和程式碼分析,已經編譯了各種array_* 函數的Big-O 綜合列表:
Lookups
- array_key_exists/isset: O( n) (實際上接近O(1))
- in_array/array_search: O(n)
佇列函數
- array_y_push var_i, for all i)
- array_pop: O (1)
- 陣列移位:O(n)
- array_unshift: O(n Σ var_i, 對於所有i)
交集、並集、減法
- array_intersect_key (100% 交集): O(Max(param_i_size) * Σparam_i_count,對於所有i)
- array_intersect(100% 交集):O(n^2 * Σparam_i_count,對於所有i>
array_intersect_assoc(100%交集):O(Max( param_i_size) * Σparam_i_count, 對所有i)- array_diff: O(π param_i_size, 對所有 i)
- 對於 i_diff_parakey: Oize, diff_param, fiff_param_diff_parakey: O_diff_param_giff_param. 1)
- array_merge: O(Σ array_i ,我!= 1)
-
(union): O(n),其中n 是第二個數組的大小-
array_replace: O(Σ array_i ,對於所有i)-
隨機
明顯Big-O
array_fill: O(n)- array_fill_keys: O(n)
- array_fill_keys: O(n)
- 。 (n)
- array_splice: O(偏移長度)
- array_slice: O(偏移長度) 或O(n) 如果長度= 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)
關於陣列查找的注意事項
雖然PHP 中的陣列查找理論上是O(n),但它們的行為實際上類似於O(1)最實用的價值。基準測試證實了這一行為,在 N=1 和 N=1,000,000 次查找之間,時間僅增加了 50% 左右。
以上是常見 PHP 陣列函數的 Big-O 表示法是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!