[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Скорость и область видимости
Zerstoren
Думаю название темы не сильно корректно так как вопрос стоит в скоростях и юзабилити АПИ.

Пишу я сейчас свой 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я подготовка стэка будет выглядеть типа
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 <адрес объекта>
call <адрес метода>
занимает это минимум процессорного времени.
2. Данный пример не предотвращает ошибки, а генерирует их с остановом работы скрипта.

Без разницы всё равно используется передача ссылки в стек, как и пересохранение ссылки в отдельный регистр.
Ясно что для процессорного времени ерунда, но всё же, вопрос был в фанатичной оптимизации

Спустя 7 часов, 40 минут, 51 секунда (8.02.2011 - 09:19) linker написал(а):
Guest
Доступ к наследуемым полям весьма тяжелая операция. Если уж заниматься фанатичной оптимизацией, то лучше передавать параметром. Почему? Ответ ты видел и процитировал.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.