Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Быстродействие класса.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Invert
Отправлено: 24 Ноября, 2010 - 13:18:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Нояб. 2010  


Помог: 5 раз(а)




Добрый день ув. пользователи.
Нужна ваша помощь в решении вопроса быстродействия класса.

Допустим есть объект:
PHP:
скопировать код в буфер обмена
  1.  
  2. class Object {
  3.  
  4.    public function SetA ( $prmA ) {
  5.       ... проверка и установка настроек объекта ...
  6.  
  7. }
  8.    public function SetB ( $prmB ) {
  9.       ... проверка и установка настроек объекта ...
  10.  
  11. }
  12.    public function SetC ( $prmC ) {
  13.       ... проверка и установка настроек объекта ...
  14. }
  15.  
  16. ...
  17.  
  18. }

PHP:
скопировать код в буфер обмена
  1.  
  2. $obj = new Object;
  3. // Установка параметров объекта
  4. // Классически задаются через отдельные методы, каждый параметр проверяется на правильность, параметры сохраняются во внутренних переменных объекта.
  5. $obj->SetA ( $prm_a );
  6. $obj->SetB ( $prm_b );
  7. $obj->SetC ( $prm_c );
  8. // Потом обрабатываем данные на основе заданных параметров
  9. $obj->SomeFunc ( $x );
  10. // Удаляем объект
  11. $obj->Free ();
  12.  


Сам скрипт обрабатывает некоторые файлы с винта, некоторые сжимает и кэширует в отдельную директорию. Сайт посещаемый, ожидаемое кол-во запросов к скрипту от 10 до 50 в секунду. Вопрос стоит в быстродействии скрипта.

Была мысль задавать все параметры внутри объекта константами, максимально уменьшив кол-во всяких проверок и методов. Пример ниже:
PHP:
скопировать код в буфер обмена
  1. class Object {
  2.    // Вместо методов установки и проверки парамеров задаем константы
  3.    const PRM_A = 'prm_a';
  4.    const PRM_A = 'prm_a';
  5.    const PRM_A = 'prm_a';
  6.  
  7. ...
  8.  
  9. }

PHP:
скопировать код в буфер обмена
  1.  
  2. $obj = new Object;
  3. // Установка параметров не требуется, все параметры жестко установлены внутри объекта
  4. $obj->SomeFunc ( $x );
  5. // Удаляем объект
  6. $obj->Free ();
  7.  

Как вы думаете, какова разница в скорости обработки этих вариантов? Стоит ли ухудшать качество класса ради увеличения скорости?
 
 Top
JustUserR
Отправлено: 24 Ноября, 2010 - 17:58:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Invert Рассмотрение предполагаемых вами вариантов осуществления инициализации экземпляра класса с функциональной точки зрения - приводит к оценке большей эффективности метода с использованием констант поскольку он не включает в себя расчет идентификатора и значения переменных - однако использование констант в рамках языка PHP не является простой заменой целевых вхождений символов и требует некоторых вычислительных операци для осуществления подстановки значения


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Invert
Отправлено: 24 Ноября, 2010 - 19:18:27
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Нояб. 2010  


Помог: 5 раз(а)




Спасибо, но хотелось бы больше конкретики. Думаю провести небольшое тестирование и показать сюда результат, если кому-то интересно.
 
 Top
JustUserR
Отправлено: 25 Ноября, 2010 - 21:54:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Invert пишет:
Спасибо, но хотелось бы больше конкретики
Пожалуйста! Осуществление рассмотрения вопроса быстродействия в предоставленном вами примере PHP-приложения включающегшо в себя элемнты класса с инициализирующими констукрторами и константыми значениями - может не предоставлять требуемых результатов при причине использования вычсилительных ресурсов в многопоточной системе при оказания влияния множества сторонних факторов Кроме того реализация ООП-технологии в языке PHP осуществлена посредством использования механизмов пространтсв имен и ссылочных объектов - что означает обращение к парамтерам целевого объекта как неявному вызову функций контроля соответствующий информационных полей


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
OrmaJever Модератор
Отправлено: 25 Ноября, 2010 - 22:49:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Invert пишет:
Думаю провести небольшое тестирование

это будет сложно зделать. Потому что скрипт не может всё время выполнятся одинаковое время. А даже в очень большом класе разница вовремени будет не значительная.

(Отредактировано автором: 25 Ноября, 2010 - 22:49:59)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
vasa_c
Отправлено: 26 Ноября, 2010 - 10:20:36
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




Как бывает в абсолютном большинстве подобных тем, вы мерите совсем не то, что нужно мерить.

Разница в выполнении конструкций языка будет совершенно ничтожна по сравнении с тем же "обрабатывает некоторые файлы с винта, некоторые сжимает и кэширует в отдельную директорию". Именно оптимизацией работы с файлами и стоит заниматься, если вообще оптимизация требуется.

Вы же пишете на PHP, а не на C, наверное выбрали его потому что он проще и удобней? Вот и в этом вопросе решайте, что удобнее, понятнее и более расширяемое.
 
 Top
JustUserR
Отправлено: 26 Ноября, 2010 - 14:34:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




vasa_c пишет:
Как бывает в абсолютном большинстве подобных тем, вы мерите совсем не то, что нужно мерить
Значение вопроса о быстродействии рассматриваемого PHP-приложения в общем случае может является достаточно существенным - в частности в случае осуществления обработки значительно числа пользовательских запросов с ресурсоемкими операциями С теоретической точки зрения в рассматриваемом PHP-приложении в качестве более эффективного варианта целесообразно рассматривать набор вложенный в класс константных полей - особенности в случае если их внутреннее представление в контексте является статическим


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
vasa_c
Отправлено: 26 Ноября, 2010 - 14:46:12
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




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

Цитата:
особенности в случае если их внутреннее представление в контексте является статическим

вот если константы лучше подходят под нужное представление и лучше соответствуют задаче, то вот поэтому их и следует использовать, а не потому что они "быстрее".

(Отредактировано автором: 26 Ноября, 2010 - 14:46:36)

 
 Top
JustUserR
Отправлено: 26 Ноября, 2010 - 14:58:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




vasa_c пишет:
Вот если константы лучше подходят под нужное представление и лучше соответствуют задаче, то вот поэтому их и следует использовать, а не потому что они "быстрее
В общем случае реализация выбора требуемых информационных полей для хранения заданный записей в действительности обеспечивается удобством структуры для реализации текущей задачи - однако в рассматриваемом случае в силу внутренних особенностей реализации ООП-механизмов в PHP обеспечение функционирования статических констант являтеся в значительной мере более эффективным


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
vasa_c
Отправлено: 26 Ноября, 2010 - 15:02:36
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




Более эффективной по каким параметрам?
 
 Top
JustUserR
Отправлено: 26 Ноября, 2010 - 15:32:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




vasa_c пишет:
Более эффективной по каким параметрам?
В действительности реализации ООП-принципов в языке PHP осуществлена на основе использования именованных пространств имен с определение текущей таблицы объектов в операторе расширения области видимости и механизма ссылочных объектов - таким образом осуществление обращения к параметрам и методам экземпляров класса в действительности обеспечивает включение неявного вызова функции обработки которая может быть переопределена в форме __get/__set - в то время как реализация обращения к статическим полям является оригинальной операцией


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
vasa_c
Отправлено: 26 Ноября, 2010 - 15:44:16
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




Хорошо, так более эффективной по каким параметрам? По скорости?
 
 Top
JustUserR
Отправлено: 27 Ноября, 2010 - 12:38:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




vasa_c пишет:
Хорошо, так более эффективной по каким параметрам? По скорости?
Рассматриваемый вариант осуществления установки значений требуемых параметров в качесвте статических константных объектов в пространстве имен целевого класса - является более эффективным по критериям быстродействия и сложности структуры внутреннего представления PHP-приложения после осуществления выполнения фазы трансляции - поскольку обеспечению включения требуемые значений в виде статических констант не требует создание дополнительных неявных функций обработки


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
vasa_c
Отправлено: 27 Ноября, 2010 - 16:04:16
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




Лично по моему ИМХу эффективным является следующее - сервер перестал справляться с нагрузкой, мы заменили методы на константы и проблема устранилась.

Если же что-то потребляет 0,05% от общих ресурсов и мы меняем его на то, что потребляет 0,04%, это не эффективность и не оптимизация.
 
 Top
JustUserR
Отправлено: 27 Ноября, 2010 - 20:23:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




vasa_c пишет:
Если же что-то потребляет 0,05% от общих ресурсов и мы меняем его на то, что потребляет 0,04%, это не эффективность и не оптимизация
Обеспечение оптимизации и уменьшение количества потребляемых вычислительных ресурсов целевого приложения является важным критерием - дело в том что если фактическая замена предполагаемой операции предоставляет некоторый незначительный прирост - то осуществление множественного вызова функционального компонента позволяет достичь лучше эффекта - практическое рассмотрение указанного аспекта может быть осуществено при программировании NP-задач


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB