Задать вопрос

Что быстрее — глобальная переменная или инициализация класса в другом классе?

Всем добрый день!


Работаю сейчас над проектом который будет работать при высокой нагрузке. Задался сейчас вопросом следующего характера:


К примеру есть класс для работы с базой данных:
class Database
{
 /* что-то тут делаем */
}



Я могу в конфиге объявить:
$db = new Database()


и потом на любой странице с этой переменной работать, сделав
global $db;


Могу поступить по-другому. Есть класс User который использует базу данных. Можно сделать так:
class User
{

public $database;
public function __construct()
{
          $this->database = new Database();
}

public function something()
{
          $this->database->query();
}
}



Либо вообще пронаследоваться от класса Database? Какой вариант по производительности будет выигрышнее? Проект очень глобальный и здесь важен любой выигрыш в производительности.


Всем спасибо!
  • Вопрос задан
  • 5248 просмотров
Подписаться 4 Оценить Комментировать
Ответ пользователя Melkij К ответам на вопрос (8)
Melkij
@Melkij
DBA Team для вашего PostgreSQL?
Используйте singleton. При том, параметризованный, чтобы получить возможность открыть больше одного коннекта к базе — на чтение и запись хотя бы. И с реализацией «ленивой загрузки»
Если вы не поняли, для чего разделение коннектов нужно — вам неважна и на несколько порядков большая разница производительности. Если поняли — то к чему этот вопрос?
Ответ написан