ホームページ > バックエンド開発 > PHPチュートリアル > 一般的な PHP 配列関数の Big-O 表記法とは何ですか?

一般的な PHP 配列関数の Big-O 表記法とは何ですか?

Patricia Arquette
リリース: 2024-12-07 00:43:11
オリジナル
860 人が閲覧しました

What are the Big-O Notations for Common PHP Array Functions?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート