Home > PHP > PHPオブジェクトは配列より遅いか

PHPオブジェクトは配列より遅いか

  • 2006-10-17 (火) 22:55
  • PHP
この記事の所要時間: 352

以前のエントリでもあったようにPHPのオブジェクトは配列より遅いという印象があります。

実際にどの程度違いがあるかをPHP4/5で計ってみました。

計測方法

各ソースを100回実行した平均を出しています。実行環境はPHP4は4.4.4、PHP5は5.1.6(共にCLI版)です。実行時間の計測にはPEAR::Benchmark_Timerを使いました。

各ソースでは配列、Hogeクラス(オブジェクト変数なし)、Hoge2クラス(オブジェクト変数あり)を計測しています。なおHoge/Hoge2クラスは以下になります。

< ?php
class Hoge {
}

class Hoge2 {
  var $id;
  var $name;
}
?>

生成

配列・オブジェクトを1000回生成しています。[ソース]

PHP4

実行時間 比率
array 0.000901 1.000000
object 0.001261 1.399353
object2 0.001592 1.767612

PHP5

実行時間 比率
array 0.000334 1.000000
object 0.000721 2.156477
object2 0.000974 2.913505

やはり配列よりオブジェクトの方が遅いですね。オブジェクト同士でもオブジェクト変数を定義してある方が遅くなっています。

意外だったのがPHP4と5で速度比率の差が大きいことです。配列、オブジェクト共にPHP5の方が速いのですが、オブジェクトに比べて配列が圧倒的に速くなっているため速度差が大きくなっています。

書き

既に作成されている配列・オブジェクトに2つの値を1000回設定しています。[ソース]

PHP4

実行時間 比率
array 0.001422 1.000000
object 0.001336 0.939508
object2 0.001325 0.932387

PHP5

実行時間 比率
array 0.000593 1.000000
object 0.000761 1.283243
object2 0.000852 1.437950

「生成」ほどの速度差はありませんでしたが、PHP4では若干配列が遅く、PHP5ではオブジェクトが遅かったです。ここでもPHP5の方が速度差が大きいですね。PHP5ではobject2(オブジェクト変数あり)の方が遅いのはなぜなのでしょう。(オブジェクト変数が定義されている方が速いような気がするのですが)

読み

既に作成されている配列・オブジェクトの2つの値を1000回取得しています。[ソース]

PHP4

実行時間 比率
array 0.001971 1.000000
object 0.001867 0.947329
object2 0.001859 0.943242

PHP5

実行時間 比率
array 0.000710 1.000000
object 0.000771 1.086580
object2 0.000854 1.202299

「生成」「書き」に比べてほとんど差はありませんね。ただ「書き」と同じくPHP5のobject2は若干遅いです。

Recordset

DBから値を読むシーンを想定して、生成・書き・読みを1000回繰り返しています。[ソース]

PHP4

実行時間 比率
array 0.003775 1.000000
object 0.003988 1.056424
object2 0.004052 1.073377

PHP5

実行時間 比率
array 0.001730 1.000000
object 0.002057 1.189017
object2 0.002616 1.512139

こうして見るとPHP4/5共に配列でもオブジェクトでもそれほど差がありませんね。ただやはりPHP5のobject2だけが遅いのが気になります。

 

生成以外は配列とオブジェクトでそれほど差が生まれなかったのは意外でした。ただ以前DBから大量のレコードセットを配列に格納した場合とオブジェクトに格納した場合で大きなパフォーマンス差が生まれた事があったので、メモリ消費量など実行時間以外の要素で差があるのかもしれません。こちらもまた検証してみたいですね。

# PHP4と5でおおよそ2倍程度のパフォーマンス差がありました。PHP5を使う理由がまた一つ増えましたね。はい。

Pocket

follow us in feedly

トラックバック:1

このエントリーのトラックバックURL
http://www.1x1.jp/blog/2006/10/php_bench_object_array.html/trackback
Listed below are links to weblogs that reference
PHPオブジェクトは配列より遅いか from Shin x blog
trackback from HotPHPPER News 06-11-10 (金) 2:53

オブジェクト操作と配列操作の速度比較…

Shin x blogで「PHPオブジェクトは配列より遅いか | Shin x blog」という題名でPHPのオブジェクト操作と配列の操作速度を比較した結果が公開されて (more…)

Home > PHP > PHPオブジェクトは配列より遅いか

検索
フィード
メタ情報

Return to page top