Пишу я сейчас свой MVC Framework который должен будет побить все рекорды скорости но и в тоже время быть простым для написания..
По этому я пытаюсь с экономить каждую тысячную секунды где только это возможно. Шыза? мб но попробовать стоит.
У меня уже написано ядро, оно очень маленькое (3,5 кб).
Так вот суть вопроса. Есть библиотека (БД к примеру) у нее область видимости только на класс контроллера т.е. для вызова модели нужно передать через аргумент объект класса.
Будет ли быстрее или медленнее работать система если область видимости будет распространятса и на модель и контроллер по сравнению с передачей аргументов?
Заметьте, сразу может использоваться куча библиотек.
Спустя 1 час, 44 минуты, 19 секунд (5.02.2011 - 00:26) Slays написал(а):
ты имеешь ввиду Registry ?
Почему бы самому не протестить несколько вариантов и не посмотреть что быстрее, тебе же на каждом шагу это придется делать, раз ты сильно на скоростях заморочился =)
Почему бы самому не протестить несколько вариантов и не посмотреть что быстрее, тебе же на каждом шагу это придется делать, раз ты сильно на скоростях заморочился =)
Спустя 10 минут, 29 секунд (5.02.2011 - 00:36) Zerstoren написал(а):
Цитата (Slays @ 4.02.2011 - 21:26) |
ты имеешь ввиду Registry ? Почему бы самому не протестить несколько вариантов и не посмотреть что быстрее, тебе же на каждом шагу это придется делать, раз ты сильно на скоростях заморочился =) |
Нет. Если вы знакомы с Code-igniter
то знаете что все обращения идут через $this
так вот, $this->db (объект БД) Контроллер имеет тот-же идентификатор объекта как и в Модели. Значит они распространяются глобально на весь модель и контроллер.
В данном случае, что будет сделать уместнее для скорости. Глобальный объект доступны и из модели и из контроллера или просто в аргумент функции модели передавать объект библиотеки
//In Controller
$this->MyModel->functions($this->db);
//In MyModel
functions($db) {
$db->get('my_table');
}
вот так сейчас у меня
Спустя 2 дня, 13 часов, 21 минута, 42 секунды (7.02.2011 - 13:58) Guest написал(а):
Цитата |
Пишу я сейчас свой MVC Framework который должен будет побить все рекорды скорости но и в тоже время быть простым для написания. |
Одно другое перетягивает и противоречит. Гибкость против производительности.
При передаче объекта в метод более гибкий вариант против - наследования, самый связанный метод проектирования классов, так что если понадобиться править, может повлиять на большую часть архитектуры.
Однако имеет минусы передача в метод:
- 1. - падение производительности, так как интерпритатору нужно сформировать так же стек вызовов аргументов перед вызовом самого метода (хотя для нынешних серверов и железа это не проблема)
2. формирование отлова ошибки если объект будет не объектом, или не того типа
public function render(IModel $model){}
один из способов предовращения ошибки
Спустя 32 минуты, 21 секунда (7.02.2011 - 14:30) linker написал(а):
1. Объекты передаются по ссылке, поэтом вcя подготовка стэка будет выглядеть типа
2. Данный пример не предотвращает ошибки, а генерирует их с остановом работы скрипта.
push <адрес объекта>занимает это минимум процессорного времени.
call <адрес метода>
2. Данный пример не предотвращает ошибки, а генерирует их с остановом работы скрипта.
Спустя 1 час, 43 минуты, 33 секунды (7.02.2011 - 16:14) Zerstoren написал(а):
Значит в данном случае лучше передавать аргумент, а не расширять область видимости.
Хоть это и понизит удобство, зато будет выигрыш на скорости.
Всем спасибо за консультацию)
Хоть это и понизит удобство, зато будет выигрыш на скорости.
Всем спасибо за консультацию)
Спустя 9 часов, 24 минуты, 10 секунд (8.02.2011 - 01:38) Guest написал(а):
Цитата (linker @ 7.02.2011 - 11:30) |
1. Объекты передаются по ссылке, поэтом вcя подготовка стэка будет выглядеть типаpush <адрес объекта>занимает это минимум процессорного времени. 2. Данный пример не предотвращает ошибки, а генерирует их с остановом работы скрипта. |
Без разницы всё равно используется передача ссылки в стек, как и пересохранение ссылки в отдельный регистр.
Ясно что для процессорного времени ерунда, но всё же, вопрос был в фанатичной оптимизации
Спустя 7 часов, 40 минут, 51 секунда (8.02.2011 - 09:19) linker написал(а):
Guest
Доступ к наследуемым полям весьма тяжелая операция. Если уж заниматься фанатичной оптимизацией, то лучше передавать параметром. Почему? Ответ ты видел и процитировал.
Доступ к наследуемым полям весьма тяжелая операция. Если уж заниматься фанатичной оптимизацией, то лучше передавать параметром. Почему? Ответ ты видел и процитировал.