PHP 組み込み関数の時間計算量を理解する
さまざまな PHP 組み込み関数は、データ構造を処理するときに異なる時間計算量を示します。この記事では、これらの関数の理論的および実際的な Big-O 時間の包括的なリストを提供し、開発者がコードのパフォーマンスを最適化できるようにします。
興味深い点
-
isset/array_key_exists: ルックアップ操作では in_array および array_search よりも大幅に高速です。
-
(Union): array_merge よりもわずかに高速で、より簡潔なデータを提供します。配列を結合するための構文。
-
shuffle: array_rand と同じ Big-O の複雑さを持ち、どちらの関数もデータのランダム化に適しています。
-
array_pop/array_push: 実行中に発生するペナルティにより、array_shift/array_unshift よりも高速になります。
Lookups
-
array_key_exists: 理論上は O( n) 複雑さ。
-
isset( $array[$index] ): array_key_exists と同様、ほぼ一定の時間計算量を示します。
-
in_array: O(n)、配列全体で線形検索を実行します。 .
-
array_search: O(n)、同じコアを利用in_array として関数を実行しますが、値を返します。
キュー関数
-
array_push: O(∑ var_i, for all i)、ここで var_i は追加を表しますとして渡される値argument.
-
array_pop: O(1).
-
array_shift: O(n)、再インデックスが必要なため。
-
array_unshift: O(n ∑ var_i、すべての i)、これも必要な再インデックスの結果です。
配列交差、結合、減算
-
array_intersect_key: 交差の場合は 100%、O(Max(param_i_size) * ∑param_i_count、すべての i);交差が 0% の場合、O(∑param_i_size, for all i).
-
array_intersect: 交差が 100% の場合、O(n^2 * ∑param_i_count, for all i);交差が 0% の場合、O(n^2).
-
array_intersect_assoc: array_intersect_key に似ていますが、同じ Big-O 時間計算量を示します。
-
array_diff : O(π param_i_size、すべての i に対して)、次の積を表します。パラメーターのサイズ。
-
array_diff_key: O(∑ param_i_size, for i != 1)。最初の配列の反復が除外されるためです。
-
array_merge : O(∑ array_i, i != 1)、ではない最初の配列の反復が必要です。
-
(Union): O(n)、n は 2 番目の配列のサイズであり、array_merge よりも低いオーバーヘッドが発生します。
- array_replace: O(∑ array_i、すべてi).
ランダム
-
シャッフル: O(n).
-
array_rand: O (n)、線形を含むsearch.
明らかな Big-O
-
array_fill: O(n).
-
array_fill_keys : O(n).
-
range: O(n).
-
array_splice: O(オフセット長).
- array_slice: 長さ = の場合は O(オフセット長) または O(n) NULL.
-
array_keys: O(n).
-
array_values: O(n).
-
array_reverse: O(n).
-
array_pad: O(pad_size).
-
array_flip: O(n).
-
array_sum: O(n).
-
配列_製品: O(n).
-
array_reduce: O(n).
-
array_filter: O(n).
-
配列マップ: O(n).
-
array_chunk: O(n).
-
array_combine: O(n).
以上が一般的な PHP 組み込み配列関数の時間計算量はどのくらいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。