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_push: O(Σ 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)
- array_diff_key: O(Σ param_i_size, 对于 i != 1)
- array_merge: O(Σ array_i ,我!= 1)
- (union): O(n),其中 n 是第二个数组的大小
- array_replace: O(Σ array_i ,对于所有i)
随机
- 随机播放:O(n)
- array_rand:O(n)
明显Big-O
- array_fill: O(n)
- array_fill_keys: O(n)
- 范围:O(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中文网其他相关文章!