array_push vs $array[] on PHP 5.1.2
こちらでも試してみました。
<?php require_once 'Benchmark/Timer.php'; $t = new Benchmark_Timer; $max = 100000; $array = array(); $t->start(); for ($i = 0; $i < $max; ++$i) { array_push($array, $i); } $t->setMarker('array_push finished'); $array = array(); $t->setMarker('array[] start'); for ($i = 0; $i < $max; ++$i) { $array[] = $i; } $t->stop(); $t->display(); ?>
これを
% php -v PHP 5.1.2 (cli) (built: Jan 15 2006 15:57:42) Copyright (c) 1997-2006 The PHP Group Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
な環境で実行すると
% php array_push.php ------------------------------------------------------------------ marker time index ex time perct ------------------------------------------------------------------ Start 1140543200.70754000 - 0.00% ------------------------------------------------------------------ array_push finished 1140543200.80896000 0.101420 56.68% ------------------------------------------------------------------ array[] start 1140543200.82226300 0.013303 7.44% ------------------------------------------------------------------ Stop 1140543200.88646000 0.064197 35.88% ------------------------------------------------------------------ total - 0.178920 100.00% ------------------------------------------------------------------
となりました。
56.68 / 35.88 = 約1.58
なので、やはりarray_pushの方が1.5倍くらい遅いですね。
この結果は感覚的には意外ではないです。自分ではarray_pushはほとんど使わないしなぁ。