Mailinglisten-Archive |
Yannik Hampe schrieb: > meineFunktion(); > meineKlasse::meineFunktion(); > $meinObjekt->meineFunktion(); > > wird von oben nach unten immer langsamer. Und zwar auf 10k Durchläufen > auch wieder sowas wie 10ms / 15ms / 20ms. Also nurmal grob, dass ich das > gemacht habe ist schon was länger her... hab das mal 'überprüft' ;-) zumindest bei meiner PHP Version 5.2.0 Windows mod tauschen Klasse::methode() und $objekt->methode() die Plätze ... 5.2.0 array(6) { ["100000 x test()"]=> float(0.110367059708) ["100000 x Test::test()"]=> float(0.212041854858) ["100000 x $test->test()"]=> float(0.150419950485) ["100000 x test() in multiTest()"]=> float(0.130726099014) ["100000 x Test::test() in Test::multiTestStatic()"]=> float(0.23764705658) ["100000 x $this->test() in $test->multiTest()"]=> float(0.169038057327) } <?php function test() { return 1 + 1; } function multiTest() { $start = microtime(true); for ($i = 0; $i < $GLOBALS['loops']; $i++) { test(); } return microtime(true) - $start; } class Test { public function __construct() {} public static function testStatic() { return 1 + 1; } public function test() { return 1 + 1; } public static function multiTestStatic() { $start = microtime(true); for ($i = 0; $i < $GLOBALS['loops']; $i++) { Test::testStatic(); } return microtime(true) - $start; } public function multiTest() { $start = microtime(true); for ($i = 0; $i < $GLOBALS['loops']; $i++) { $this->test(); } return microtime(true) - $start; } } $loops = 100000; $times = array(); $test = new Test; $start = microtime(true); for ($i = 0; $i < $loops; $i++) { test(); } $times[$loops . ' x test()'] = microtime(true) - $start; $start = microtime(true); for ($i = 0; $i < $loops; $i++) { Test::testStatic(); } $times[$loops . ' x Test::test()'] = microtime(true) - $start; $start = microtime(true); for ($i = 0; $i < $loops; $i++) { $test->test(); } $times[$loops . ' x $test->test()'] = microtime(true) - $start; $times[$loops . ' x test() in multiTest()'] = multiTest(); $times[$loops . ' x Test::test() in Test::multiTestStatic()'] = Test::multiTestStatic(); $times[$loops . ' x $this->test() in $test->multiTest()'] = $test->multiTest(); echo phpversion() . '<pre>'; var_dump($times); ?> -- Sebastian Mendel www.sebastianmendel.de
php::bar PHP Wiki - Listenarchive