момент Guide to Programming with Zend Framework by Cal Evans

Категория: / DEV Блог / PHP (LAMP)
Посмотрел начало книжечки php|architect’s Guide to Programming with Zend Framework by Cal Evans

Там товарищ Кал Еванс пишет:

>> It’s just that easy. Since we are storing the instance of Zend_Config_Ini the first time
>> we call getConfig() there is no performance penalty to making multiple calls.

Якобы вызов многоразовый вызов getConfig() вместо прямого обращения к объекту не отражается на производительности и не стоит
волновать по этому поводу. Спички конечно, но сишники бы затоптали точно.

Набросаем код теста подобного синглетона.

class test_class {
  protected $index = 0;
  public static $_instance;
  public static function getInstance(  ) { if (!self::$_instance) { self::$_instance = new self; } return self::$_instance; }
  public static function destroy() { self::$_instance = null; }
  public function run() { $this->index++; }
  public function getIndex() { return $this->index; }
}
 
function test($count) {
 
  echo "\nTesting for {$count} \n\n";
  test_class::destroy();
 
  // 1
 
  $time = xdebug_time_index();
  $test = test_class::getInstance();
 
  for ($i=0; $i<$count; $i++) {
        $test->run();
  }
 
  $time = xdebug_time_index() - $time;
  printf("1) %.8f (%d) \n", $time, $test->getIndex());
 
  // 2
 
  test_class::destroy();
 
  $time = xdebug_time_index();
 
  for ($i=0; $i<$count; $i++) {
        test_class::getInstance()->run();
  }
 
  $time = xdebug_time_index() - $time;
  printf("2) %.8f (%d) \n", $time, test_class::getInstance()->getIndex());
 
}
 
test(10);
test(100);


Результаты теста:

Testing for 10
 
1) 0.00016785 (10)
2) 0.00012207 (10)
 
Testing for 100
 
1) 0.00054193 (100)
2) 0.00106192 (100)


Видно, что в первом случае получение инстанса объекта, и дальнейшее обращение напрямую к экземпляру практически в два раза быстрее,
чем каждоразовое обращение к синглетону через getInstance().

П.С.: Порадовало название раздела книги "Super Secret Ninja Class: Globals.php" =)

Здесь можно скачать PDF версию книги php|architect’s Guide to Programming with Zend Framework.