PHP 関数の Big-O のリスト
PHP 組み込み配列関数は、時間計算量とその大きな理解において大きく異なる場合があります。 -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, for all 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, for all i)
- array_diff: O(π param_i_size, for all i)
- array_diff_key: O(∑ param_i_size, for i != 1)
- array_merge : O(∑ array_i, i != 1)
- (union): O(n)、n は 2 番目の配列のサイズ
- array_replace: O(∑ array_i 、全員にとってi)
ランダム
- シャッフル: O(n)
- array_rand: O(n)
明らかBig-O
- array_fill: O(n)
- array_fill_keys: O(n)
- range: O(n)
- array_splice: O(オフセットlength)
- array_slice: O(オフセット長) または長さ = NULL の場合は O(n)
- 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 中国語 Web サイトの他の関連記事を参照してください。